JP2010009175A - Program performance estimation device - Google Patents

Program performance estimation device Download PDF

Info

Publication number
JP2010009175A
JP2010009175A JP2008165558A JP2008165558A JP2010009175A JP 2010009175 A JP2010009175 A JP 2010009175A JP 2008165558 A JP2008165558 A JP 2008165558A JP 2008165558 A JP2008165558 A JP 2008165558A JP 2010009175 A JP2010009175 A JP 2010009175A
Authority
JP
Japan
Prior art keywords
information
unit
program
wait
program operation
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.)
Pending
Application number
JP2008165558A
Other languages
Japanese (ja)
Inventor
Kazutomi Kato
一臣 加藤
Masahiko Saito
雅彦 齊藤
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.)
Panasonic Corp
Original Assignee
Panasonic Corp
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 Panasonic Corp filed Critical Panasonic Corp
Priority to JP2008165558A priority Critical patent/JP2010009175A/en
Publication of JP2010009175A publication Critical patent/JP2010009175A/en
Pending legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

<P>PROBLEM TO BE SOLVED: To solve the problem that it is impossible to estimate execution time relevant to a section in which a computer stops its operation and does not execute a command in estimation of program performance based on an operation simulation in which high cycle accuracy is not achieved. <P>SOLUTION: An estimation device 80 acquires a record of operations of the occurrence of wait and pseudo timer events during operation of a program, estimates operation time between the pseudo timer events from sections in which the wait does not occur by analyzing command execution, cache hit and bus access on the basis of specification information of SoC, and estimates the time for the occurrence of the wait on the basis of pseudo timer event information of the sections in which the wait occurs. <P>COPYRIGHT: (C)2010,JPO&INPIT

Description

本発明は、種々のコンピュータアーキテクチャにおいて実行されるプログラムの性能を見積もる技術に関するものである。   The present invention relates to a technique for estimating the performance of a program executed in various computer architectures.

コンピュータ上で実行されるプログラムの性能は、主にそのプログラムの動作とコンピュータの仕様により決定される。実在しないコンピュータ上で動作するプログラムの性能を計測することができないので、新規のコンピュータの仕様によるプログラム性能の変化を把握するためには、何らかの見積もり手段が必要になる。   The performance of a program executed on a computer is mainly determined by the operation of the program and the specifications of the computer. Since the performance of a program running on a non-existing computer cannot be measured, some estimation means is required to grasp the change in program performance due to the specifications of the new computer.

そのような見積もり手段として、一般にハードウェアエミュレータ、あるいはサイクル精度のソフトウェアのシミュレータを利用する手段が知られている。これは、コンピュータの仕様を擬似的に設定可能であり、設定したコンピュータの動作クロックに応じた振る舞いを正確にシミュレートし、プログラムの実行に要した総サイクル数を算出するものである。   As such estimation means, means that use a hardware emulator or a cycle-precision software simulator is generally known. In this case, the specification of the computer can be set in a pseudo manner, the behavior according to the set operation clock of the computer is accurately simulated, and the total number of cycles required to execute the program is calculated.

しかし、一般的にハードウェアエミュレータ、あるいはサイクル精度のソフトウェアのシミュレータは低速で動作することから、実用上のプログラムの性能を見積もるのに必要とする時間がかかるという欠点があった。   However, since a hardware emulator or a cycle-accurate software simulator generally operates at a low speed, there is a drawback that it takes time to estimate the performance of a practical program.

上記背景のもとで、サイクル精度ではなく、CPUの動作を命令の順序を保証することのみで、動作速度が高速なシミュレーションを行い、全命令の実行時間の合計を算出する技術が開示されている(例えば、特許文献1参照)。プログラム、データ初期値、実行開始番地及び実行終了番地を入力とし、CPUの全命令の実行トレースを行い、パイプラインストールとキャッシュ方式とキャッシュサイズに関する情報を用いてヒット率シミュレーションを実施する。その結果得られたトレース情報にストールペナルティを加えて実行クロック数を求め、キャッシュミスによる実行時間の増加を見積もる技術が開示されている。その中で特に、割り込み処理に起因するキャッシュミスの増加等に基づいて生じる実行時間の増加を考慮し、見積もりに反映していた。
特開2000−276381号公報
Based on the above background, there is disclosed a technique for calculating the total execution time of all instructions by performing a simulation with a high operation speed only by guaranteeing the order of instructions for CPU operation, not cycle accuracy. (For example, refer to Patent Document 1). The program, data initial value, execution start address, and execution end address are input, execution traces of all instructions of the CPU are performed, and hit rate simulation is performed using information on pipeline installation, cache method, and cache size. A technique is disclosed in which a stall penalty is added to the trace information obtained as a result to determine the number of execution clocks, and an increase in execution time due to a cache miss is estimated. In particular, an increase in execution time caused by an increase in cache miss caused by interrupt processing is taken into consideration and reflected in the estimation.
JP 2000-276381 A

しかしながら、一般にプログラムの動作中には、コンピュータが動作を停止し、実行している命令の処理を停止することがある。例えば、プログラムの実行中にコンピュータと接続している他の機器に処理を要求し、他の機器の処理を待つ場合、コンピュータ自身が停止処理を行い、何らかの起動トリガを発生するまで命令の実行を停止し待つ場合などがある。   However, in general, during the operation of a program, the computer may stop operating, and may stop processing instructions being executed. For example, if a request is made to another device connected to the computer during the execution of the program and the processing of the other device is waited for, the computer itself performs a stop process and executes the instruction until some start trigger is generated. There is a case of stopping and waiting.

前記従来の技術は、コンピュータのシミュレートによる全命令の実行トレースに基づき性能を見積もっており、プログラムの動作中に、コンピュータが動作を停止し、命令を実行していない区間の実行時間を見積もることができない。つまり、プログラムの動作全体に対する性能を見積もることができないという課題を有していた。   In the conventional technique, the performance is estimated based on the execution trace of all instructions by computer simulation, and the execution time of the section in which the computer stops operating and the instruction is not executed during the operation of the program is estimated. I can't. In other words, there is a problem that it is impossible to estimate the performance of the entire program operation.

本発明は、前記従来の課題を解決するもので、コンピュータが動作を停止している区間に対する性能見積もりを可能にし、プログラムの動作全体に対する性能を見積もることを可能にするプログラム性能見積もり装置の提供を目的とする。   The present invention solves the above-described conventional problems, and provides a program performance estimation device that enables performance estimation for a section in which the computer stops operating and enables estimation of performance for the entire operation of the program. Objective.

前記従来の課題を解決するために、本発明のプログラム性能見積もり装置は、コンピュータ上で動作するプログラムの動作性能を見積もるプログラム性能見積もり装置であって、プログラムの動作に関する命令実行とデータアクセスに関する情報、ウェイトの発生とイベント発生の情報を取得するプログラム動作情報入力部と、前記プログラム動作情報入力部から取得したプログラム動作情報のうち、ウェイトが発生する区間とウェイトが発生しない区間を判別し抽出するウェイト発生区間抽出部と、前記ウェイト発生区間抽出部から取得したウェイトが発生しない区間のプログラム動作情報と、SoCの仕様情報に基づき、命令実行とストールを解析する命令実行解析部と、前記ウェイト発生区間抽出部から取得したプログラム動作情報と、SoCの仕様情報に基づき、データアクセス要求に対するキャッシュヒットとバスアクセスを解析するバスアクセス解析部と、前記命令実行解析部から命令実行解析結果と前記バスアクセス解析部からバスアクセス解析結果を取得し、前記命令実行解析部と前記バスアクセス解析部からイベント発生の情報を取得し、前記解析結果とストールサイクル情報に基づきイベント間の動作時間を見積もるイベント間見積もり部と、前記イベント間見積もり部から取得したイベント間の動作時間と、前記ウェイト発生区間抽出部から取得したウェイトが発生した区間のプログラム動作情報に基づき、ウェイトが発生した時間を見積もるウェイト発生時間見積もり部を備えることを特徴とする。   In order to solve the above-described conventional problems, the program performance estimation apparatus of the present invention is a program performance estimation apparatus that estimates the operation performance of a program running on a computer, and includes information related to instruction execution and data access related to program operation, A program operation information input unit for acquiring information on occurrence of a wait and event occurrence, and a weight for determining and extracting a section in which a wait occurs and a section in which no wait occurs in the program operation information acquired from the program operation information input unit A generation section extracting unit; a program operation information of a section in which no weight is acquired, obtained from the wait generation section extraction unit; an instruction execution analysis unit for analyzing instruction execution and stall based on SoC specification information; and the wait generation section Program operation information obtained from the extraction unit Based on the SoC specification information, a bus access analysis unit for analyzing a cache hit and a bus access for a data access request, an instruction execution analysis result from the instruction execution analysis unit, and a bus access analysis result from the bus access analysis unit, Obtained event occurrence information from the instruction execution analysis unit and the bus access analysis unit, and obtained from the inter-event estimation unit and the inter-event estimation unit for estimating the operation time between events based on the analysis result and the stall cycle information A wait generation time estimation unit is provided that estimates a time at which a wait has occurred based on an operation time between events and program operation information of a section in which a wait occurred, acquired from the wait generation section extraction unit.

上記の構成により、ウェイト発生区間とウェイト発生しない区間を判別し、SoC仕様に基づくイベント間の性能見積もりを用いて、ウェイト発生区間の性能見積もりを可能にし、プログラムの動作全体に対する性能を見積もることができる。   With the above configuration, it is possible to discriminate between a wait generation interval and a non-wait generation interval, enable performance estimation of the wait generation interval using performance estimation between events based on the SoC specification, and estimate performance for the entire operation of the program. it can.

本発明のプログラム性能見積もり装置によれば、コンピュータが動作を停止している区間に対する性能見積もりを可能にし、プログラムの動作全体に対する性能を見積もることができる。   According to the program performance estimation apparatus of the present invention, it is possible to estimate the performance of the section in which the computer stops operating, and to estimate the performance of the entire program operation.

以下、本発明の実施の形態について、図面を参照しながら説明する。   Hereinafter, embodiments of the present invention will be described with reference to the drawings.

図1は、本発明の実施の形態におけるプログラム性能見積もり装置を備えた情報処理装置の構成を示す図である。この情報処理装置1000は、それ自体としてユーザの使用に供することもできるが、様々な電気機器に組み込まれてもよい。情報処理装置1000の一例は、代表的にはPC(Personal Computer;パーソナルコンピュータあるいはパソコン)等の汎用のコンピュータである。PDA(Personal Digital Assistance)あるいは携帯電話機等の携帯通信端末でもよい。   FIG. 1 is a diagram illustrating a configuration of an information processing apparatus including a program performance estimation apparatus according to an embodiment of the present invention. The information processing apparatus 1000 can be used by a user as it is, but may be incorporated in various electric devices. An example of the information processing apparatus 1000 is typically a general-purpose computer such as a PC (Personal Computer). It may be a PDA (Personal Digital Assistance) or a mobile communication terminal such as a mobile phone.

情報処理装置1000は、CPU(Central Processing Unit;中央演算処理部)1、メモリ装置2、通信装置34、入力装置40、表示装置45、タイマ回路51及び割り込みコントローラ55を備えている。これらの装置は、バスライン50を通じて互いに接続されている。また、必要に応じて、バスライン50には、ハードディスク装置25及び読み取り装置32を接続することが可能となっている。ハードディスク装置25、読み取り装置32、入力装置40及び表示装置45は、それぞれ、インタフェース26、35、41及び46を通じてバスライン50に接続される。   The information processing apparatus 1000 includes a CPU (Central Processing Unit) 1, a memory device 2, a communication device 34, an input device 40, a display device 45, a timer circuit 51, and an interrupt controller 55. These devices are connected to each other through a bus line 50. Further, the hard disk device 25 and the reading device 32 can be connected to the bus line 50 as necessary. The hard disk device 25, the reading device 32, the input device 40, and the display device 45 are connected to the bus line 50 through the interfaces 26, 35, 41, and 46, respectively.

CPU1は、単一のCPUで構成されても良く、複数のCPUで構成されてもよい。一例として、情報処理装置1000は、複数のCPU11、12、13、・・・を有するものとする。メモリ装置2は、ROM(Read Only Memory)21及びRAM(Random Access Memory)22を備えている。ROM21は、CPU1の動作を規定するコンピュータプログラム及びデータを記憶している。コンピュータプログラム及びデータは、ハードディスク装置25に記憶させることもできる。CPU1は、ROM21又はハードディスク装置25が格納するコンピュータプログラム及びデータを、必要に応じてRAM22に書き込みつつ、コンピュータプログラムが規定する処理を実行する。RAM22は、CPU1が処理を実行するのに伴って発生するデータを一時的に記憶する媒体としても機能する。ROM21には、フラッシュROMのように書き込みが可能で、電源を切っても記憶内容を保持できる不揮発性のメモリと記憶媒体も含まれる。RAM22には、電源を切ると記憶内容が保持されない揮発性のメモリと記憶媒体が含まれる。   The CPU 1 may be composed of a single CPU or a plurality of CPUs. As an example, the information processing apparatus 1000 includes a plurality of CPUs 11, 12, 13,. The memory device 2 includes a ROM (Read Only Memory) 21 and a RAM (Random Access Memory) 22. The ROM 21 stores computer programs and data that define the operation of the CPU 1. The computer program and data can also be stored in the hard disk device 25. The CPU 1 executes processing specified by the computer program while writing the computer program and data stored in the ROM 21 or the hard disk device 25 to the RAM 22 as necessary. The RAM 22 also functions as a medium for temporarily storing data generated as the CPU 1 executes processing. The ROM 21 includes a nonvolatile memory and a storage medium that can be written like a flash ROM and can retain stored contents even when the power is turned off. The RAM 22 includes a volatile memory and a storage medium whose stored contents are not retained when the power is turned off.

ハードディスク装置25は、内蔵する不図示のハードディスクへ、コンピュータプログラム、あるいはデータを書き込み及び読み出す装置である。読み取り装置32は、記録媒体31(例えばCD、DVD、メモリカードなど)に記録されたコンピュータプログラム、あるいはデータを読み取る装置である。通信装置34は、電話回線、ネットワーク線、無線、赤外線通信等の通信回線33を通じて、外部と自身との間で、コンピュータプログラム、あるいはデータを交換する装置である。入力装置40は、ユーザの操作によりデータ等を入力する装置であり、例えば、PDAに配列されたキーボード、携帯電話機に配列された入力ボタン、あるいは着脱自在のマウス、キーボードである。表示装置45は、データ、画像等を画面に表示したり、データ等を音声で出力したりする装置であり、例えばLCD(Liguid Crystal Display;液晶表示器)、ブラウン管、スピーカである。   The hard disk device 25 is a device that writes and reads a computer program or data to a built-in hard disk (not shown). The reading device 32 is a device that reads a computer program or data recorded on a recording medium 31 (eg, CD, DVD, memory card, etc.). The communication device 34 is a device that exchanges a computer program or data between the outside and itself through a communication line 33 such as a telephone line, a network line, wireless communication, and infrared communication. The input device 40 is a device for inputting data or the like by a user operation, and is, for example, a keyboard arranged on a PDA, an input button arranged on a mobile phone, or a detachable mouse or keyboard. The display device 45 is a device that displays data, images, and the like on a screen and outputs data and the like by sound, and is, for example, an LCD (Liquid Crystal Display), a cathode ray tube, or a speaker.

タイマ回路51は、一定の周期でタイマ割り込み信号を出力する装置である。割り込みコントローラ55は、タイマ回路51、入力装置40、CPU1、ネットワークデバイスとしての通信装置34、ハードディスク装置25、読み取り装置32等から送られる割り込み要求信号を、CPU1へ中継する装置である。各装置からの割り込み要求には優先度が付けられている。割り込みコントローラ55は、同時に複数の装置から割り込みが発生した場合には、それらの要求を優先度に応じて調停する機能を有している。   The timer circuit 51 is a device that outputs a timer interrupt signal at a constant cycle. The interrupt controller 55 is a device that relays an interrupt request signal sent from the timer circuit 51, the input device 40, the CPU 1, the communication device 34 as a network device, the hard disk device 25, the reading device 32, and the like to the CPU 1. Priorities are assigned to interrupt requests from each device. The interrupt controller 55 has a function of arbitrating requests according to priority when interrupts are simultaneously generated from a plurality of devices.

以上のように、情報処理装置1000は、コンピュータとして構成されている。上記コンピュータプログラムは、ROM21、ハードディスク装置25、不図示のフレキシブルディスク、CD−ROM等のプログラム記録媒体31を通じて供給することも、電気通信回線33等の伝送媒体を通じて供給することも可能である。例えば、プログラム記録媒体31(CD−ROM)に記録されたコンピュータプログラムは、読み取り装置32を情報処理装置1000へ接続することで、読み出すことができる。また、読み出したコンピュータプログラムを、RAM22あるいはハードディスク装置25に格納することができる。   As described above, the information processing apparatus 1000 is configured as a computer. The computer program can be supplied through a program recording medium 31 such as a ROM 21, a hard disk device 25, a flexible disk (not shown), a CD-ROM, or a transmission medium such as an electric communication line 33. For example, a computer program recorded on the program recording medium 31 (CD-ROM) can be read by connecting the reading device 32 to the information processing device 1000. In addition, the read computer program can be stored in the RAM 22 or the hard disk device 25.

プログラム記録媒体としてROM21からコンピュータプログラムが供給される場合には、当該ROM21を情報処理装置1000に搭載することにより、CPU1は上記コンピュータプログラムに従った処理を実行可能となる。電気通信回線33等の伝送媒体を通じて供給されるコンピュータプログラムは、通信装置34を通じて受信され、例えば、RAM22あるいはハードディスク装置25に格納される。伝送媒体は、有線の伝送媒体に限られず、無線の伝送媒体であってもよい。また、伝送媒体は通信線路のみでなく、通信線路を中継する中継装置、例えばルータをも含む。   When a computer program is supplied from the ROM 21 as a program recording medium, the CPU 1 can execute processing according to the computer program by mounting the ROM 21 in the information processing apparatus 1000. A computer program supplied through a transmission medium such as the electric communication line 33 is received through the communication device 34 and stored in the RAM 22 or the hard disk device 25, for example. The transmission medium is not limited to a wired transmission medium, and may be a wireless transmission medium. The transmission medium includes not only a communication line but also a relay device that relays the communication line, such as a router.

プログラム性能見積もり機能の実体は、メモリ装置2あるいはハードディスク装置25に格納され、CPU1と協働して実行することにより、プログラム性能見積もり装置を実現している。   The entity of the program performance estimation function is stored in the memory device 2 or the hard disk device 25, and is executed in cooperation with the CPU 1, thereby realizing a program performance estimation device.

図2は、プログラム動作ログを出力するプログラム疑似動作装置70の構成を示すブロック図である。プログラム動作ログは、プログラム性能見積もり装置80に出力され、プログラム性能見積もり装置80は、プログラム動作ログを用いて、性能見積もりを行う。プログラム疑似動作装置70は、典型的にはコンピュータ、プロセッサ、デバイスのハードウェアの動作を模擬するシミュレータあるいはエミュレータと、そのシミュレータあるいはエミュレータ上で動作するプログラムから成る。プログラム疑似動作装置70は、特にサイクル精度による動作のシミュレートを要求されず、実行する命令を模擬するものであればよい。さらには、プログラム疑似動作装置70は、実際のハードウェアであるコンピュータ、プロセッサ、デバイスそのものであってもよい。   FIG. 2 is a block diagram illustrating a configuration of the program pseudo operation apparatus 70 that outputs a program operation log. The program operation log is output to the program performance estimation device 80, and the program performance estimation device 80 performs performance estimation using the program operation log. The program pseudo-operation device 70 typically includes a simulator or emulator that simulates the operation of hardware of a computer, processor, or device, and a program that operates on the simulator or emulator. The program pseudo-operation device 70 is not particularly required to simulate an operation with cycle accuracy, and may be any device that simulates an instruction to be executed. Furthermore, the program pseudo-operation device 70 may be a computer, a processor, or a device itself that is actual hardware.

プログラム疑似動作装置70は、プログラムを疑似的に動作させ、プログラム性能見積もり装置80がプログラムの動作性能を見積もるのに必要な情報を、動作記録であるログとして出力する。なお、プログラム疑似動作装置70が出力するプログラム動作ログは、必ずしもファイルなどの形式で二次記憶装置上に格納する必要はなく、プログラム性能見積もり装置80に渡せる形式であればよい。   The program pseudo operation device 70 operates the program in a pseudo manner, and outputs information necessary for the program performance estimation device 80 to estimate the operation performance of the program as a log that is an operation record. Note that the program operation log output by the program pseudo-operation device 70 does not necessarily need to be stored in the secondary storage device in the form of a file or the like, and may be in a format that can be passed to the program performance estimation device 80.

図2を参照し、プログラム疑似動作装置70の構成を説明する。   With reference to FIG. 2, the configuration of the program pseudo-operation device 70 will be described.

命令実行検出部201は、プログラムが動作している際に、コンピュータあるいはCPUなどのプロセッサ上で実行される命令の実行を検出する。命令実行検出部201は、例えばシミュレータあるいはエミュレータに備わる命令の実行を監視する機能を利用し、実行される命令をすべて検出することが可能である。CPUなどのプロセッサに転送された命令でありながら、最終的に条件により実行されない命令も検出することが可能である。   The instruction execution detection unit 201 detects the execution of an instruction executed on a processor such as a computer or a CPU when the program is operating. The instruction execution detection unit 201 can detect all instructions to be executed using a function of monitoring execution of instructions provided in a simulator or an emulator, for example. Although it is an instruction transferred to a processor such as a CPU, it is possible to detect an instruction that is not finally executed due to a condition.

また、命令実行検出部201は、検出開始と終了のトリガを外部から受け、指定された開始から終了までの区間における命令の実行を検出する。   Further, the instruction execution detection unit 201 receives a trigger for detection start and end from the outside, and detects the execution of the instruction in a specified section from the start to the end.

命令実行検出部201は、命令の実行を検出した後、実行番地であるプログラムカウンタ、実行命令コード、プロセッサの動作モードに応じた識別子などをプログラム動作ログ出力部206に渡す。また、命令実行検出部201は、命令実行に関する動作ログであることを示す識別子、開始から終了までの区間における命令実行の回数をプログラム動作ログ出力部206に渡すこともできる。また、命令実行検出部201は、命令の実行番地であるプログラムカウンタを命令フェッチ要求検出部202に渡すことができる。   After detecting the execution of the instruction, the instruction execution detection unit 201 passes a program counter that is an execution address, an execution instruction code, an identifier corresponding to the operation mode of the processor, and the like to the program operation log output unit 206. The instruction execution detection unit 201 can also pass to the program operation log output unit 206 an identifier indicating that the operation log is related to instruction execution and the number of instruction executions in the section from the start to the end. Further, the instruction execution detection unit 201 can pass a program counter which is an instruction execution address to the instruction fetch request detection unit 202.

また、命令実行検出部201は、実行命令コードを解析し、何の命令であるかを判断した上で出力を変える機能を有してもよい。例えば、検出した命令が分岐命令であった場合、プログラム性能の見積もりに反映させるために、命令実行検出部201は、分岐命令であることを示す識別子を、プログラム動作ログ出力部206に出力することが可能となる。また、検出した命令が、ロード命令またはストア命令などの、外部の記憶装置へのアクセスを要求する命令である場合、命令実行検出部201は、データアクセス要求検出部203に実行命令コードを出力することが可能となる。   The instruction execution detection unit 201 may have a function of changing an output after analyzing an execution instruction code and determining what instruction it is. For example, if the detected instruction is a branch instruction, the instruction execution detection unit 201 outputs an identifier indicating that the instruction is a branch instruction to the program operation log output unit 206 in order to reflect the estimated instruction in the program performance. Is possible. When the detected instruction is an instruction that requests access to an external storage device, such as a load instruction or a store instruction, the instruction execution detection unit 201 outputs an execution instruction code to the data access request detection unit 203. It becomes possible.

命令フェッチ要求検出部202は、命令実行時後部201からプログラムカウンタを受け取り、命令フェッチ要求の発生を検出する。つまり、命令フェッチ要求検出部202は、事前に指定された命令フェッチ単位長を超えるプログラムカウンタになった場合に、命令フェッチ要求が発生すると見なして命令フェッチ要求の記録をプログラム動作ログ出力部206に通知する。   The instruction fetch request detection unit 202 receives a program counter from the instruction execution rear part 201 and detects the occurrence of an instruction fetch request. That is, the instruction fetch request detection unit 202 considers that an instruction fetch request is generated when the program counter exceeds the instruction fetch unit length specified in advance, and records the instruction fetch request to the program operation log output unit 206. Notice.

データアクセス要求検出部203は、命令実行検出部201から渡された実行命令コードを解析し、解析した結果をプログラム動作ログ出力部206に通知する。ここでの解析した結果とは、データアクセスを要求する番地、読み出し(read)であるか書き込み(write)かの判定、及び要求するデータサイズ、なお、図2では、データアクセス要求検出部203は、命令実行検出部201から実行命令コードを受け取って解析している。別の構成として、データアクセス要求検出部203が、シミュレータあるいはエミュレータに備わる機能であるデータアクセスを監視する機能を利用し、直接データアクセス要求を検出し、データアクセス要求に関係する情報を取得してもよい。   The data access request detection unit 203 analyzes the execution instruction code passed from the instruction execution detection unit 201 and notifies the program operation log output unit 206 of the analysis result. The analysis result here is an address for requesting data access, determination of read or write, and requested data size. In FIG. 2, the data access request detection unit 203 The execution instruction code is received from the instruction execution detection unit 201 and analyzed. As another configuration, the data access request detection unit 203 uses a function of monitoring data access, which is a function of a simulator or emulator, to directly detect a data access request and acquire information related to the data access request. Also good.

ウェイト発生監視部204は、命令実行検出部201から実行番地であるプログラムカウンタまたは実行命令コードなどの情報を受け取り、命令の実行を停止するタイミングであるか否かを判定する。ウェイト発生監視部204は、停止するタイミングと判定した場合、命令の実行を停止したことを示す情報を、プログラム動作ログ出力部206に通知する。なお、ウェイト発生監視部204は、実行命令コードの解析結果を用いて、命令の実行を停止する命令であるかどうかを判定することができる。また、受け取ったプログラムカウンタを用いて、ほかのデバイスまたは機器を待つための関数の呼び出しまたはモジュールの実行であることを判定することができる。これは、コンピュータまたはプロセッサが命令の実行を停止し待ち状態に入るのは、特定の命令を実行する場合またはプログラムの動作中に実行される特定の関数またはモジュールを実行するためである。   The wait generation monitoring unit 204 receives information such as a program counter or an execution instruction code that is an execution address from the instruction execution detection unit 201, and determines whether it is a timing to stop execution of the instruction. If the wait generation monitoring unit 204 determines that it is time to stop, the wait generation monitoring unit 204 notifies the program operation log output unit 206 of information indicating that execution of the instruction has been stopped. Note that the wait generation monitoring unit 204 can determine whether or not the instruction is to stop the execution of the instruction using the analysis result of the execution instruction code. In addition, it is possible to determine that the call is a function call or module execution for waiting for another device or apparatus using the received program counter. This is because the computer or processor stops executing instructions and enters a wait state to execute a specific function or module that is executed when executing a specific instruction or during the operation of a program.

疑似タイマ記録部205は、疑似的なタイマを動作させ、プログラム疑似動作装置70の疑似環境下の時間情報をプログラム動作ログ出力部206に通知する。例えば、プログラム疑似動作装置70そのものが動作するコンピュータに接続するタイマ回路を利用することができる。このタイマ回路が、実世界で一定の時間間隔でイベントを発生させることにより、プログラム疑似動作装置70上の世界に、疑似的に一定の時間間隔のイベントを発生させる。疑似タイマ記録部205は、疑似的なタイマイベントを受けると、プログラム動作ログ出力部206に疑似的なタイマイベントの発生を通知する。また、タイマイベント発生時に、その時のタイムスタンプをプログラム動作ログ出力部206に通知することも可能である。   The pseudo timer recording unit 205 operates a pseudo timer, and notifies the program operation log output unit 206 of time information under the pseudo environment of the program pseudo operation device 70. For example, a timer circuit connected to a computer on which the program pseudo-operation device 70 itself operates can be used. This timer circuit generates an event at a constant time interval in the real world, thereby generating an event at a pseudo time interval in the world on the program pseudo-operation device 70. When receiving the pseudo timer event, the pseudo timer recording unit 205 notifies the program operation log output unit 206 of the occurrence of the pseudo timer event. Further, when a timer event occurs, the time stamp at that time can be notified to the program operation log output unit 206.

プログラム動作ログ出力部206は、命令実行検出部201、命令フェッチ要求検出部202、データアクセス要求検出部203、ウェイト発生監視部204、疑似タイマ記録部205から情報を受け取り、プログラム動作ログを生成する。また、プログラム動作ログ出力部206は、生成したプログラム動作ログを、プログラム性能見積もり装置80に出力する。なお、プログラム動作ログは、受け取った情報が発生した順序関係を把握できる形式であるものとする。   The program operation log output unit 206 receives information from the instruction execution detection unit 201, the instruction fetch request detection unit 202, the data access request detection unit 203, the wait generation monitoring unit 204, and the pseudo timer recording unit 205, and generates a program operation log. . Further, the program operation log output unit 206 outputs the generated program operation log to the program performance estimation device 80. It is assumed that the program operation log has a format in which the order relationship in which the received information is generated can be grasped.

以上の構成により、本発明のプログラム擬似動作装置70は、ウェイト発生監視部204と疑似タイマ記録部205から取得する情報を用いて、命令の実行停止時間を見積もるのに必要な情報を、プログラム動作ログとして出力できる。このプログラム動作ログを受け取ったプログラム性能見積もり装置80は、命令を実行している区間だけでなく、コンピュータが動作を停止している区間に対する性能見積もりを可能とする。これにより、プログラムの動作全体に対する性能を見積もることができる。このコンピュータが停止している区間は、プログラムの実行中にコンピュータと接続しているほかの機器に処理を要求し、ほかの機器の処理完了を待つ時間を含んでいる。また、コンピュータ自身が停止処理を行い、何らかの起動トリガを発生するまで命令の実行を停止し待つ時間を含んでいる。   With the above configuration, the program pseudo-operation device 70 of the present invention uses the information acquired from the wait generation monitoring unit 204 and the pseudo-timer recording unit 205 to obtain information necessary for estimating the execution stop time of an instruction. Can be output as a log. The program performance estimation device 80 that has received this program operation log enables performance estimation not only for the section in which the instruction is executed but also for the section in which the computer stops operating. This makes it possible to estimate the performance for the entire program operation. This section in which the computer is stopped includes a time for requesting processing to another device connected to the computer during execution of the program and waiting for processing of the other device to be completed. Further, it includes a time for the computer itself to stop processing and to stop execution of the instruction and wait until an activation trigger is generated.

また、プログラム疑似動作装置70は、プログラムをサイクル精度でシミュレートし動作させるものではないので、プログラム疑似動作装置70の疑似環境下の時間情報が必要となる。そのため、疑似タイマ記録部205により疑似的なタイマを動作させ、プログラム疑似動作装置70の疑似環境下の時間情報をプログラム動作ログ出力部206に通知することにより、疑似的な時間情報をプログラム動作ログに含めることができる。   Further, since the program pseudo-operation device 70 does not simulate and operate a program with cycle accuracy, time information in the pseudo environment of the program pseudo-operation device 70 is required. Therefore, the pseudo timer recording unit 205 operates a pseudo timer and notifies the program operation log output unit 206 of the time information under the pseudo environment of the program pseudo operation device 70, so that the pseudo time information is stored in the program operation log. Can be included.

図3は、プログラム疑似動作装置70が出力しプログラム性能見積もり装置80に入力するプログラム動作ログに記される情報の一例である。図3では、1行で一つのログ情報を示しており、プログラム動作ログに記される情報90は、発生した順序に従って、5つのログ情報(251〜255)が上から並んでいる。各ログ情報は、識別子と、補助情報とから構成されている。   FIG. 3 is an example of information recorded in the program operation log output from the program pseudo-operation device 70 and input to the program performance estimation device 80. In FIG. 3, one log information is shown in one line, and the information 90 described in the program operation log has five log information (251 to 255) arranged from the top according to the order of occurrence. Each log information includes an identifier and auxiliary information.

識別子は、動作ログの種別を識別するための情報である。識別できるのであれば、補助情報に含まれるほかの情報を用いて、識別してもよい。例えば、命令フェッチ要求に関する情報(図3の252)は、アクセス種別により命令フェッチ要求の情報であることを特定しても問題はない。   The identifier is information for identifying the type of operation log. If it can be identified, it may be identified using other information included in the auxiliary information. For example, there is no problem even if the information related to the instruction fetch request (252 in FIG. 3) is the information of the instruction fetch request by the access type.

補助情報は、識別子に応じて必要となる情報が異なっている。   The auxiliary information requires different information depending on the identifier.

ログ情報251は、命令実行検出部201からプログラム動作ログ出力部206に渡される情報の一例である。プログラムカウンタ値と実行命令種別が記される。実行命令種別は、実行命令コードを解析した後に命令を特定する識別情報を記してもよいし、実行命令コードを解析せずに記録してもかまわない。   The log information 251 is an example of information passed from the instruction execution detection unit 201 to the program operation log output unit 206. The program counter value and execution instruction type are written. As the execution instruction type, identification information for specifying an instruction after the execution instruction code is analyzed may be recorded, or the execution instruction code may be recorded without being analyzed.

ログ情報252は、命令フェッチ要求検出部202からプログラム動作ログ出力部206に渡される情報の一例である。命令フェッチを要求しているアドレスと、命令フェッチであることを示すアクセス種別と、命令フェッチで要求しているサイズが記される。   The log information 252 is an example of information passed from the instruction fetch request detection unit 202 to the program operation log output unit 206. The address requesting the instruction fetch, the access type indicating the instruction fetch, and the size requested by the instruction fetch are described.

ログ情報253は、データアクセス要求検出部203からプログラム動作ログ出力部206に渡される情報の一例である。データアクセスを要求しているアドレスと、データアクセスの要求が読み込み(readアクセス)であるか書き出し(writeアクセス)であるかを判別するアクセス種別と、データアクセスで要求しているサイズが記される。   The log information 253 is an example of information passed from the data access request detection unit 203 to the program operation log output unit 206. The address requesting data access, the access type for determining whether the data access request is read (read access) or write (write access), and the size requested for data access are described. .

ログ情報254は、ウェイト発生監視部204からプログラム動作ログ出力部206に渡される情報の一例である。命令の実行が停止するウェイトが発生したことを示すウェイト発生イベント発生記録と、ウェイト種別が記される。ウェイト種別は、プログラムが自らコンピュータまたはプロセッサを停止モードにしたかどうか、あるいはほかの機器またはデバイスに対する何の要求を出して待ちに入っているのかを示す。   The log information 254 is an example of information passed from the wait occurrence monitoring unit 204 to the program operation log output unit 206. A wait occurrence event occurrence record indicating that a wait to stop execution of an instruction has occurred, and a wait type are recorded. The wait type indicates whether the program has put the computer or processor into the stop mode, or what request is issued to another device or device and is waiting.

ログ情報255は、疑似タイマ記録部205からプログラム動作ログ出力部206に渡される情報の一例である。疑似タイマからのイベントが発生したことを示す疑似タイマイベント発生記録と、疑似タイマからのイベントが発生した時刻を示すタイムスタンプが記される。   The log information 255 is an example of information passed from the pseudo timer recording unit 205 to the program operation log output unit 206. A pseudo timer event occurrence record indicating that an event from the pseudo timer has occurred, and a time stamp indicating the time when the event from the pseudo timer has occurred are recorded.

図3に示すプログラム動作ログに記される情報90は、一例であり、同等の情報が別の形式に加工されていても、プログラム性能見積もり装置80の動作に支障はない。   The information 90 recorded in the program operation log shown in FIG. 3 is an example, and there is no problem in the operation of the program performance estimation apparatus 80 even if equivalent information is processed into another format.

また、実際にはプログラム動作ログは、プログラムの動作として記録される一連の情報が発生した順序関係を特定できる形式で記録される。最も単純には、発生した順序の時系列により、プログラム動作の情報が記されていればよい。   In practice, the program operation log is recorded in a format that can identify the order relationship in which a series of information recorded as program operations has occurred. In the simplest case, the program operation information only needs to be written in the time sequence of the order of occurrence.

図4は、本発明の実施の形態におけるプログラム性能見積もり装置80の構成を示すブロック図である。   FIG. 4 is a block diagram showing the configuration of the program performance estimation apparatus 80 in the embodiment of the present invention.

プログラム性能見積もり装置80は、プログラム動作ログ入力部301、ウェイト発生区間抽出部303、CPUバス仕様入力部、命令実行解析部305、バスアクセス解析部306、ストールサイクル管理部307、擬似タイマ時間見積もり部308、通常処理時間見積もり部309、ウェイト発生時間見積もり部310、見積もり時間提示部311を備えている。   The program performance estimation device 80 includes a program operation log input unit 301, a wait generation interval extraction unit 303, a CPU bus specification input unit, an instruction execution analysis unit 305, a bus access analysis unit 306, a stall cycle management unit 307, a pseudo timer time estimation unit. 308, a normal processing time estimation unit 309, a weight generation time estimation unit 310, and an estimated time presentation unit 311.

プログラム動作ログ入力部301は、プログラム疑似動作装置70からプログラム動作ログを受け取り、受け取ったプログラム動作ログをウェイト発生区間抽出部303に出力する。   The program operation log input unit 301 receives the program operation log from the program pseudo operation device 70 and outputs the received program operation log to the wait generation interval extraction unit 303.

ウェイト発生区間抽出部303は、プログラム動作ログに含まれる各ログ情報が、ウェイト発生区間に発生したプログラム動作か否かを判定する。ウェイト発生区間に発生したプログラム動作と判定した場合、ウェイト発生区間抽出部303は、対応するログ情報を、ウェイト発生時間見積もり部310に通知する。また、ウェイトが発生していない通常動作区間に発生したプログラム動作と判定した場合、ウェイト発生区間抽出部303は、対応するログ情報を命令実行解析部305、及びバスアクセス解析部306に通知する。   The wait generation interval extraction unit 303 determines whether each piece of log information included in the program operation log is a program operation occurring in the wait generation interval. When it is determined that the program operation has occurred in the wait occurrence interval, the wait occurrence interval extraction unit 303 notifies the corresponding log information to the wait occurrence time estimation unit 310. When it is determined that the program operation has occurred in the normal operation section where no wait has occurred, the wait generation section extraction unit 303 notifies the corresponding log information to the instruction execution analysis unit 305 and the bus access analysis unit 306.

CPUバス仕様入力部304は、見積もり対象のプログラムを動作させることを想定するコンピュータ、プロセッサ、あるいはCPUに関する仕様、種々のキャッシュアーキテクチャ、バスアーキテクチャの仕様を読み込み、その情報を命令実行解析部305、バスアクセス解析部306、ストールサイクル管理部307に通知する。つまり、CPUバス仕様入力部304は、見積もり対象のSoCの仕様情報を読み込み、各処理部(305、306、307)が必要とする情報を抽出して、通知を行う。   The CPU bus specification input unit 304 reads specifications related to a computer, a processor, or a CPU that is assumed to operate a program to be estimated, various cache architectures, and bus architecture specifications, and reads the information into an instruction execution analysis unit 305, a bus The access analysis unit 306 and the stall cycle management unit 307 are notified. That is, the CPU bus specification input unit 304 reads the SoC specification information to be estimated, extracts information necessary for each processing unit (305, 306, 307), and performs notification.

命令実行解析部305、バスアクセス解析部306及びストールサイクル管理部307は、上述のCPUバス仕様入力部304から、解析に必要なCPUとキャッシュアーキテクチャ仕様の情報を取得して動作する。   The instruction execution analysis unit 305, the bus access analysis unit 306, and the stall cycle management unit 307 operate by acquiring CPU and cache architecture specification information necessary for analysis from the CPU bus specification input unit 304 described above.

ストールサイクル管理部307は、CPU関連の情報と、キャッシュ関連のストールサイクルに関する情報と、外バス関連のストールサイクルに関する情報などをストールサイクル管理情報として管理し、保持している。ストールサイクル管理部307は、CPUバス仕様入力部304から取得した仕様に基づいて、見積もりに使用するストール数の情報を、擬似タイマ時間見積もり部308と通常処理時間見積もり部309に通知する。   The stall cycle management unit 307 manages and holds CPU related information, cache related stall cycle information, external bus related stall cycle information, and the like as stall cycle management information. The stall cycle management unit 307 notifies the pseudo timer time estimation unit 308 and the normal processing time estimation unit 309 of the number of stalls used for estimation based on the specification acquired from the CPU bus specification input unit 304.

命令実行解析部305は、ウェイト発生区間抽出部303からログ情報を、CPUバス仕様入力部304からCPU仕様情報を取得し、命令実行に関するプログラム動作を解析する。具体的には、命令の実行回数と分岐命令の実行回数、パイプラインハザードによるストールサイクル回数を算出する。なお、命令実行解析部305が取得するログ情報は、例えば、図3のログ情報251であり、プログラムカウンタ値と実行命令コードの情報を得る。また、命令実行解析部305は、取得したログ情報に含まれる擬似タイマイベント発生記録を用いて、算出した値と擬似タイマイベントとを対応付け、通常処理時間見積もり部309と疑似タイマ時間見積もり部308に解析情報を通知する。   The instruction execution analysis unit 305 acquires log information from the wait generation interval extraction unit 303 and CPU specification information from the CPU bus specification input unit 304, and analyzes a program operation related to instruction execution. Specifically, the number of instruction executions, the number of branch instruction executions, and the number of stall cycles due to pipeline hazards are calculated. Note that the log information acquired by the instruction execution analysis unit 305 is, for example, the log information 251 in FIG. 3 and obtains information on a program counter value and an execution instruction code. In addition, the instruction execution analysis unit 305 associates the calculated value with the pseudo timer event using the pseudo timer event occurrence record included in the acquired log information, and normal processing time estimation unit 309 and pseudo timer time estimation unit 308. Notify the analysis information.

バスアクセス解析部306は、ウェイト発生区間抽出部303からログ情報を、CPUバス仕様入力部304からキャッシュ仕様情報を取得し、命令フェッチ及びデータアクセスに関する解析を行う。具体的は、キャッシュヒット回数を算出する。なお、バスアクセス解析部306が取得するログ情報は、例えば、図3のログ情報252、ログ情報253である。また、バスアクセス解析部306は、取得したログ情報に含まれる疑似タイマイベント発生記録を用いて、算出した値と擬似タイマイベントとを対応付け、通常処理時間見積もり部309と疑似タイマ時間見積もり部308に解析情報を通知する。   The bus access analysis unit 306 acquires log information from the wait generation interval extraction unit 303 and cache specification information from the CPU bus specification input unit 304, and performs an analysis related to instruction fetch and data access. Specifically, the number of cache hits is calculated. The log information acquired by the bus access analysis unit 306 is, for example, the log information 252 and the log information 253 in FIG. Further, the bus access analysis unit 306 associates the calculated value with the pseudo timer event using the pseudo timer event occurrence record included in the acquired log information, and normal processing time estimation unit 309 and pseudo timer time estimation unit 308. Notify the analysis information.

疑似タイマ時間見積もり部308は、命令実行解析部305とバスアクセス解析部から解析情報を取得し、ストールサイクル管理部307からストール数の情報を取得し、擬似タイマイベント区間のプログラム動作時間を算出する。また、擬似タイマ時間見積もり部308は、算出したプログラム動作時間と、対象としている疑似タイマイベントと対応付け、ウェイト発生時間見積もり部310に通知する。   The pseudo timer time estimation unit 308 acquires analysis information from the instruction execution analysis unit 305 and the bus access analysis unit, acquires information on the number of stalls from the stall cycle management unit 307, and calculates the program operation time of the pseudo timer event interval. . Further, the pseudo timer time estimation unit 308 associates the calculated program operation time with the target pseudo timer event, and notifies the wait generation time estimation unit 310 of it.

ウェイト発生時間見積もり部310は、コンピュータが他の機器の処理を待つ場合や、何らかの起動トリガを発生するまで命令の実行を停止し待つ場合の動作時間を見積もる。   The wait generation time estimation unit 310 estimates an operation time when the computer waits for processing of another device or when the execution of an instruction is stopped and waits until a certain activation trigger is generated.

ウェイト発生時間見積もり部310は、ウェイトが発生した際のプログラム動作であるとウェイト発生区間抽出部303が判断したプログラム動作ログの情報を取得する。ウェイト発生時間見積もり部310は、そのプログラム動作ログの情報から疑似タイマイベントが発生した回数を計算する。   The wait generation time estimation unit 310 acquires information on the program operation log determined by the wait generation interval extraction unit 303 as a program operation when a wait occurs. The wait occurrence time estimation unit 310 calculates the number of times a pseudo timer event has occurred from the information of the program operation log.

また、ウェイト発生時間見積もり部310は、疑似タイマ時間見積もり部308が各疑似タイマイベント区間に対して算出した動作時間を取得し、その各疑似タイマイベント区間に動作時間に基づき疑似タイマイベント区間あたりの動作時間を算出する。典型的には、全ての各疑似タイマイベント区間の動作時間の平均値、あるいは中央値、あるいは最頻値を疑似タイマイベント区間あたりの動作時間と判断してもよいし、分布の偏りを考慮して上位と下位のサンプルを何パーセントか削除した上で平均値、あるいは中央値を疑似タイマイベント区間あたりの動作時間と判断してもよい。   Further, the wait generation time estimation unit 310 acquires the operation time calculated by the pseudo timer time estimation unit 308 for each pseudo timer event interval, and the pseudo timer event interval per pseudo timer event interval is calculated based on the operation time. Calculate the operating time. Typically, the average value, median value, or mode value of the operation time of all the pseudo timer event intervals may be determined as the operation time per pseudo timer event interval, and distribution bias is considered. After removing some percentage of the upper and lower samples, the average value or the median value may be determined as the operation time per pseudo timer event interval.

ウェイト発生時間見積もり部310は、上記算出した疑似タイマイベント区間あたりの動作時間と、プログラム動作ログに基づき計算した疑似タイマイベントの発生回数との積により、ウェイト発生区間抽出部303から取得したプログラム動作全体においてコンピュータが待ちにより停止した時間であると見なし、その時間をウェイト発生時間として見積もり時間提示部311に通知する。これにより、コンピュータが待ちの発生により停止している処理区間に対して停止時間を見積もることが可能になる。   The wait generation time estimation unit 310 calculates the program operation acquired from the wait generation interval extraction unit 303 by the product of the calculated operation time per pseudo timer event interval and the number of occurrences of the pseudo timer event calculated based on the program operation log. The estimated time presenting unit 311 notifies the estimated time presenting unit 311 of the time as a wait occurrence time. As a result, it is possible to estimate the stop time for the processing section in which the computer is stopped due to the occurrence of waiting.

通常処理時間見積もり部309は、命令実行解析部305から命令時実行回数、分岐命令回数、ストール回数の情報などの命令実行に関するプログラム動作の解析情報を取得し、バスアクセス解析部からキャッシュヒット回数と外バスアクセス情報などの命令フェッチ及びデータアクセスに関する解析情報を取得し、解析情報の全体のプログラム動作時間を算出し、見積もり時間提示部311に通知する。   The normal processing time estimation unit 309 acquires program operation analysis information related to instruction execution, such as information on the number of executions at the time of instruction, the number of branch instructions, and the number of stalls, from the instruction execution analysis unit 305, and The analysis information related to instruction fetch and data access such as external bus access information is acquired, the entire program operation time of the analysis information is calculated, and the estimated time presentation unit 311 is notified.

通常処理時間見積もり部309は、疑似タイマ時間見積もり部308と同様の動作を行う。動作が異なる点は、疑似タイマ時間見積もり部308が疑似タイマイベント間の動作時間を算出しているのに対し、通常処理時間見積もり部309は命令実行解析部305及びバスアクセス解析部306から取得するプログラム動作の解析情報全体に対して動作時間を算出する点である。通常処理時間見積もり部309は、プログラム動作の解析情報全体に対し、CPU実行時間及び各レベルのキャッシュヒットに要する時間及び外バスアクセス時間を算出し、その合計をプログラムが待ちに入らず動作している通常処理時間であると判断し、見積もり時間提示部311に通知する。   The normal processing time estimation unit 309 performs the same operation as the pseudo timer time estimation unit 308. The difference in operation is that the pseudo timer time estimation unit 308 calculates the operation time between pseudo timer events, whereas the normal processing time estimation unit 309 obtains from the instruction execution analysis unit 305 and the bus access analysis unit 306. The operation time is calculated for the entire analysis information of the program operation. The normal processing time estimation unit 309 calculates the CPU execution time, the time required for cache hits at each level, and the external bus access time for the entire analysis information of the program operation, and the program operates without waiting for the total. It is determined that it is the normal processing time, and the estimated time presenting unit 311 is notified.

あるいは、通常処理時間見積もり部309はプログラム動作の解析情報全体ではなく、指定されるタイマイベント間の動作時間を算出することも可能である。例えば、疑似タイマのタイムスタンプにより動作時間を見積もる区間の開始と終了を指定し、指定される区間に対して上記と同様に通常処理時間を算出し、見積もり時間提示部311に通知する。この場合、疑似タイマ時間見積もり部308は、開始と終了を示すタイムスタンプの区間に存在する疑似タイマイベントの発生回数を計算し、疑似タイマイベント区間あたりの動作時間との積により、指定された開始から終了までの区間のウェイト発生時間を見積もり、見積もり時間提示部311に通知する。   Alternatively, the normal processing time estimation unit 309 can calculate the operation time between designated timer events instead of the entire analysis information of the program operation. For example, the start and end of the section for estimating the operation time is specified by the time stamp of the pseudo timer, the normal processing time is calculated in the same manner as described above, and the estimated time presentation unit 311 is notified. In this case, the pseudo timer time estimation unit 308 calculates the number of occurrences of the pseudo timer event existing in the time stamp interval indicating start and end, and calculates the specified start by the product of the operation time per pseudo timer event interval. The wait generation time in the section from the end to the end is estimated and notified to the estimated time presentation unit 311.

見積もり時間提示部311は、通常処理時間見積もり部309から取得したプログラムが動作している通常処理時間と、ウェイト発生時間見積もり部310から取得したウェイト発生時間を合算し、プログラム疑似動作装置70から取得したプログラム動作ログ全体においてコンピュータが待ちにより停止している時間を含め、プログラム動作時間として出力することができる。このプログラム動作時間がプログラム性能見積もり値である。   The estimated time presentation unit 311 adds the normal processing time in which the program acquired from the normal processing time estimation unit 309 is operating and the wait generation time acquired from the wait generation time estimation unit 310 to obtain from the program pseudo-operation device 70. In the entire program operation log, the program operation time including the time during which the computer is stopped due to waiting can be output. This program operation time is an estimated program performance value.

以上により、本発明のプログラム性能見積もり装置80は、命令を実行している区間だけでなく、コンピュータが動作を停止している区間に対する見積もりを可能にする。これにより、サイクル精度がない動作シミュレーションに基づくプログラム性能の見積もりにおいて、プログラムの動作全体の性能を見積もることができる。   As described above, the program performance estimation apparatus 80 according to the present invention enables estimation not only for a section in which an instruction is executed but also for a section in which the computer stops operating. Thereby, in the estimation of the program performance based on the operation simulation with no cycle accuracy, the performance of the entire program operation can be estimated.

図5は、ウェイト発生区間抽出部303の処理フローを示している。ウェイト発生区間抽出部303は、プログラム動作ログ入力部301からプログラム動作ログを受け取り、最初の疑似タイマイベントの発生記録を確認することで、処理を開始する。   FIG. 5 shows a processing flow of the weight generation interval extraction unit 303. The wait generation interval extraction unit 303 receives the program operation log from the program operation log input unit 301, and starts processing by confirming the generation record of the first pseudo timer event.

ウェイト発生区間抽出部303は、現在の疑似タイマイベントの記録から、次に発生する疑似タイマイベントの記録までの区間に存在するプログラム動作ログを確認する(S321)。プログラム動作ログを確認とは、対象のログ情報の内容を確認することを意味する。   The wait generation interval extraction unit 303 checks the program operation log existing in the interval from the recording of the current pseudo timer event to the recording of the next generated pseudo timer event (S321). Confirming the program operation log means confirming the contents of the target log information.

ウェイト発生区間抽出部303は、現在の疑似タイマイベントの区間内に、ウェイト発生イベントのログ情報が存在するか否かを判定する(S322)。   The wait occurrence interval extraction unit 303 determines whether log information of the wait occurrence event exists in the current pseudo timer event interval (S322).

ウェイト発生イベントのログ情報が存在する場合(S322でYes)、ウェイト発生区間抽出部303は、現在の疑似タイマイベント区間のプログラム動作を、ウェイトが発生した際のプログラム動作であると判断する。そして、対応するログ情報をウェイト発生時間見積もり部310に通知する(S325)。   When log information of a wait occurrence event exists (Yes in S322), the wait occurrence interval extraction unit 303 determines that the program operation in the current pseudo timer event interval is a program operation when a wait occurs. Then, the corresponding log information is notified to the wait occurrence time estimation unit 310 (S325).

一方、ウェイト発生イベントの記録が存在しない場合(S322でNo)、ウェイト発生区間抽出部303は、現在の疑似タイマイベントの区間内に、ほかのプログラム動作のログ情報が存在するかを判定する(S323)。なお、ここで存在を判定するのは、プログラムカウンタの値、命令フェッチ、データアクセスなどのログ情報である。ほかのプログラム動作のログ情報が存在する場合(S323でYes)、ウェイト発生区間抽出部303は、現在の疑似タイマイベント区間のログ情報を命令実行解析部305、及びバスアクセス解析部306に通知する(S324)。   On the other hand, when there is no record of the wait occurrence event (No in S322), the wait occurrence interval extraction unit 303 determines whether there is log information of another program operation in the interval of the current pseudo timer event ( S323). It is to be noted that log information such as a program counter value, instruction fetch, and data access is determined. When log information of other program operations exists (Yes in S323), the wait generation interval extraction unit 303 notifies the instruction execution analysis unit 305 and the bus access analysis unit 306 of the log information of the current pseudo timer event interval. (S324).

また、ほかのプログラム動作のログ情報が存在しない場合(S323でNo)、ウェイト発生区間抽出部303は、現在の疑似タイマイベント区間のプログラム動作を、ウェイトが発生した際のプログラム動作であると判断する。そして、対応するログ情報をウェイト発生時間見積もり部310に通知する(S325)。   If there is no log information of other program operations (No in S323), the wait generation interval extraction unit 303 determines that the program operation in the current pseudo timer event interval is a program operation when a wait occurs. To do. Then, the corresponding log information is notified to the wait occurrence time estimation unit 310 (S325).

なお、プログラム動作ログの先頭から最初の疑似タイマイベントの記録までの間に発生しているプログラム動作のログ情報に関して、ウェイト発生時間見積もり部310は、ウェイトが発生していない通常動作区間であると判断する。そして、この区間のプログラム動作のログ情報を、命令実行解析部305、及びバスアクセス解析部306に通知すればよい。また、最後の疑似タイマイベントの記録からプログラム動作ログの最後尾までに発生しているプログラム動作のログ情報に関して、ウェイト発生時間見積もり部310は、ウェイトが発生していない通常動作区間であると判断する。そして、この区間のプログラム動作ログの情報を、命令実行解析部305、及びバスアクセス解析部306に渡せばよい。   Regarding the log information of the program operation that has occurred between the beginning of the program operation log and the recording of the first pseudo timer event, the wait generation time estimation unit 310 is in a normal operation section in which no wait has occurred. to decide. Then, the log information of the program operation in this section may be notified to the instruction execution analysis unit 305 and the bus access analysis unit 306. Further, with respect to the log information of the program operation that has occurred from the last pseudo timer event recording to the end of the program operation log, the wait generation time estimation unit 310 determines that the normal operation section in which no wait has occurred. To do. Then, information on the program operation log in this section may be passed to the instruction execution analysis unit 305 and the bus access analysis unit 306.

図6は、CPUバス仕様入力部304が読み込む情報の一例を示している。図6の401は、CPUに関する仕様の情報をまとめて記すもので、その中にはクロック周波数(402)、実行並列度(403)、分岐予測方式(404)、バイパス回路の有無(405)に関する情報などが含まれる。   FIG. 6 shows an example of information read by the CPU bus specification input unit 304. Reference numeral 401 in FIG. 6 collectively describes information on the specifications related to the CPU. Among them, the clock frequency (402), the execution parallelism (403), the branch prediction method (404), and the presence / absence of a bypass circuit (405) are included. Information etc. are included.

クロック周波数402は、CPUの動作の最小単位であるクロックが単位時間あたりどの程度供給されるのかを示す値であり、典型的にはMHzまたはGHzの単位に基づいて、CPUのクロック周波数の値が記される。   The clock frequency 402 is a value indicating how much a clock, which is the minimum unit of operation of the CPU, is supplied per unit time. Typically, the value of the CPU clock frequency is based on the unit of MHz or GHz. It is written.

実行並列度403にはCPUが命令をどの程度並列に実行することができると想定するかを記すことができ、例えば、1クロックあたりの命令の実行回数を平均的に記してもよく、命令に応じて並列に実行できるかどうかの情報を記してもよい。命令に応じた実行並列度の情報を記す場合、並列に実行可能である命令が何であるかを実行命令コードに基づいて判断できる情報が記されていればよい。   The execution parallelism 403 can indicate how much the CPU is assumed to be able to execute instructions in parallel. For example, the execution count of instructions per clock may be averaged. Accordingly, information on whether or not it can be executed in parallel may be written. When writing information about the degree of execution parallelism according to an instruction, it is only necessary to describe information that can determine what instruction can be executed in parallel based on the execution instruction code.

分岐予測方式404は、CPUが備える分岐予測機能に関する情報を示し、分岐予測機能の有無、あるいは分岐予測の方式の種別が記される。また、バイパス回路有無405は、CPUのパイプラインハザードが起きた際に、迂回して前段にデータを送るバイパス回路の有無の情報を記されている。   The branch prediction method 404 indicates information related to the branch prediction function provided in the CPU, and indicates the presence / absence of the branch prediction function or the type of the branch prediction method. The bypass circuit presence / absence 405 describes information on the presence / absence of a bypass circuit that bypasses and sends data to the preceding stage when a CPU pipeline hazard occurs.

図7は、CPUバス仕様入力部304が読み込む情報の一例を示している。図7の451は、キャッシュアーキテクチャ仕様の情報をまとめて記す物で、その中には使用有無(452)、方式(453)、way数(454)、ブロック数(455)、ラインサイズ(456)、置換アルゴリズム(457)、ダーティビット管理(458)に関する情報などが含まれる。   FIG. 7 shows an example of information read by the CPU bus specification input unit 304. Reference numeral 451 in FIG. 7 collectively describes cache architecture specification information, including presence / absence (452), method (453), number of ways (454), number of blocks (455), and line size (456). , Information about the replacement algorithm (457), dirty bit management (458), and the like.

キャッシュは記憶媒体である外部デバイスとの間に介在する小容量で高速な記憶媒体であり、複数の段数分を実装することができる。そのため、プログラム性能を見積もる上で想定するキャッシュの構成に応じ、複数段のキャッシュアーキテクチャ仕様の情報を読み込むことが可能である。また、複数段分のキャッシュ構成を想定し、レベル1のキャッシュアーキテクチャ仕様だけではなく、レベル2、レベル3、またはそれ以上の段数に関しても、同様にキャッシュアーキテクチャ仕様の情報を読み込むことができる。   A cache is a small-capacity and high-speed storage medium that is interposed between an external device that is a storage medium, and a plurality of stages can be mounted. For this reason, it is possible to read information on a plurality of stages of cache architecture specifications according to the cache configuration assumed in estimating the program performance. Further, assuming a cache configuration of a plurality of stages, not only the cache architecture specification of level 1 but also the information of the cache architecture specification can be similarly read for the number of stages of level 2, level 3, or more.

キャッシュの使用有無452は、そのレベルのキャッシュを使用するかどうかを示す情報が記される。   Information indicating whether or not to use the cache of the level is written in the cache use / non-use 452.

キャッシュの方式453は、命令フェッチとデータアクセスの双方を扱う統合型(ユニファイド)キャッシュであるか、命令フェッチとデータアクセスを分離して別々に扱う分離型(ハーバード)キャッシュであるかの情報が記される。   The cache method 453 is information indicating whether it is an integrated (unified) cache that handles both instruction fetch and data access or a separate (Harvard) cache that handles instruction fetch and data access separately. It is written.

way数454、ブロック数455、ラインサイズ456は、キャッシュの総容量を決めるパラメータである。キャッシュにヒットするかミスするかを判定する基準のサイズをラインサイズ456として、典型的にはバイト(byte)の単位で記される。また、ブロック数455は、1つのラインサイズをブロック数1として、1wayあたりのラインサイズの総個数に相当する値が記される。way数454は、キャッシュにヒットするかミスするかを、並列に判定することができるラインサイズ×ブロック数のキャッシュが幾つ備わっているかを示す。   The number of ways 454, the number of blocks 455, and the line size 456 are parameters that determine the total capacity of the cache. A reference size for determining whether to hit or miss the cache is a line size 456, and is typically written in units of bytes. The number of blocks 455 is a value corresponding to the total number of line sizes per way, where one line size is 1 block. The number of ways 454 indicates the number of caches of line size × number of blocks that can determine in parallel whether to hit or miss the cache.

置換アルゴリズム457は、LRU、ランダム置換など、どの置換アルゴリズムを使用するかを記す。ダーティビット管理458は、キャッシュラインに対する書き込みが発生した場合に、キャッシュラインの中でどの単位でダーティビットを管理するかを示す。   The replacement algorithm 457 indicates which replacement algorithm such as LRU or random replacement is used. The dirty bit management 458 indicates in which unit the dirty bit is managed in the cache line when writing to the cache line occurs.

また、CPUバス仕様入力部304は、CPU仕様とキャッシュ仕様のみならず、接続しているバスの種別と、バス幅またはバースト長などのバス仕様に関しても情報を読み込むことができる。   Further, the CPU bus specification input unit 304 can read information not only about the CPU specification and the cache specification, but also about the type of the connected bus and the bus specification such as the bus width or burst length.

図8は、ストールサイクル管理部307が管理するストールサイクル管理情報の一例を示している。図8の471は、ストールサイクル管理情報をまとめて記すもので、その中にはCPU関連の情報、キャッシュ関連のストールサイクルに関する情報、外バス関連のストールサイクルに関する情報などが含まれる。   FIG. 8 shows an example of stall cycle management information managed by the stall cycle management unit 307. Reference numeral 471 in FIG. 8 collectively describes the stall cycle management information, which includes CPU related information, cache related stall cycle information, external bus related stall cycle information, and the like.

ストールサイクル管理部307は、CPUバス仕様入力部304からクロック周波数402の値を取得し、クロック周波数472として管理する。CPI473は1つの命令に対しCPUが動作するサイクル数を示す。あらかじめ定数値を与えてもよいが、ストールサイクル管理部307は条件に応じて、疑似タイマ時間見積もり部308及び通常処理時間見積もり部309に通知するストール管理情報を変化させることが可能である。例えば、ストールサイクル管理部307は、CPU−AとCPU−Bの2種類のCPU種別に応じCPIの値を管理する。ストールサイクル管理部307は、CPUバス仕様入力部304が読み込んだCPU仕様の実行並列度403が示すCPU種別に応じCPIの値を選択し、疑似タイマ時間見積もり部308及び通常処理時間見積もり部309に通知することが可能である。   The stall cycle management unit 307 acquires the value of the clock frequency 402 from the CPU bus specification input unit 304 and manages it as the clock frequency 472. CPI 473 indicates the number of cycles in which the CPU operates for one instruction. Although a constant value may be given in advance, the stall cycle management unit 307 can change the stall management information notified to the pseudo timer time estimation unit 308 and the normal processing time estimation unit 309 according to conditions. For example, the stall cycle management unit 307 manages the CPI value according to two types of CPUs, CPU-A and CPU-B. The stall cycle management unit 307 selects a CPI value according to the CPU type indicated by the CPU specification execution parallelism 403 read by the CPU bus specification input unit 304, and sends it to the pseudo timer time estimation unit 308 and the normal processing time estimation unit 309. It is possible to notify.

また、その他のストールサイクル管理情報に関しても、ストールサイクル管理部307はCPUバス仕様入力部304から取得する仕様の条件に応じ、変化させることができる。CPUは一般にパイプライン実行されるので、分岐命令が実行された結果、後続のアドレス以外にジャンプすることになると、それまでパイプラインに積んでいた、後続のアドレスの命令が無駄になる。そのため、分岐ペナルティ474がストール数として加算される。ストールサイクル管理部307は、分岐ペナルティ474に関しても、分岐予測機能がない場合、あるいは分岐予測機能がある場合に、その種別ごとに、分岐ペナルティを管理する。CPUバス仕様入力部304のCPU仕様の情報から、分岐予測方式の情報を取得すると、それに応じて分岐ペナルティの情報を疑似タイマ時間見積もり部308及び通常処理時間見積もり部309に通知する。   Further, regarding other stall cycle management information, the stall cycle management unit 307 can change the stall cycle management information according to the specification conditions acquired from the CPU bus specification input unit 304. Since the CPU is generally executed in a pipeline, when a branch instruction is executed and a jump is made to other than the subsequent address, the instruction at the subsequent address that has been loaded in the pipeline until then is wasted. Therefore, the branch penalty 474 is added as the number of stalls. The stall cycle management unit 307 also manages a branch penalty for each type of branch penalty 474 when there is no branch prediction function or when there is a branch prediction function. When the branch prediction method information is acquired from the CPU specification information of the CPU bus specification input unit 304, the branch penalty information is notified to the pseudo timer time estimation unit 308 and the normal processing time estimation unit 309 accordingly.

また、ストールサイクル管理部307は、レジスタ競合ストール475も同様に、CPUのバイパス回路の有無によりストール数を管理する。CPUバス仕様入力部304から取得するバイパス回路有無405の情報に応じて、ストール数の情報を疑似タイマ時間見積もり部308及び通常処理時間見積もり部309に通知する。   The stall cycle management unit 307 also manages the number of stalls in the register contention stall 475 according to the presence or absence of the CPU bypass circuit. In accordance with the bypass circuit presence / absence information 405 acquired from the CPU bus specification input unit 304, the stall number information is notified to the pseudo timer time estimation unit 308 and the normal processing time estimation unit 309.

ストールサイクル管理部307は、キャッシュ関連のストール情報も管理する。基準クロック周波数477には、キャッシュ関連のストールサイクル数が、どの周波数のサイクルベースで記されているかを示す周波数値が管理される。キャッシュ関連のCPU関連のクロック周波数472を利用してもかまわない。   The stall cycle management unit 307 also manages cache-related stall information. In the reference clock frequency 477, a frequency value indicating which cycle base the cache-related stall cycle number is written is managed. A cache-related CPU-related clock frequency 472 may be used.

ストールサイクル管理部307は、レベル1キャッシュヒット時にストール478またはレベル2キャッシュヒット時のストール479のように、キャッシュのレベルに応じて、キャッシュヒット時のストール数を管理することができる。キャッシュのレベル数増加に応じて管理することも可能である。   The stall cycle management unit 307 can manage the number of stalls at the time of a cache hit according to the level of the cache, such as the stall 478 at the time of level 1 cache hit or the stall 479 at the time of level 2 cache hit. It is also possible to manage as the number of cache levels increases.

また、レベル1キャッシュヒット時のストール情報もアクセスの条件に応じて管理することも可能である。例えば、リード(read)アクセスによる場合とライト(write)アクセスによる場合に分けて、ストール情報を管理してもよい。   Also, stall information at the time of level 1 cache hit can be managed according to the access conditions. For example, the stall information may be managed separately for the case of read access and the case of write access.

ストールサイクル管理部307は、さらに外バス関連のストール情報も管理する。基準クロック周波数480は、外バス関連のストールサイクル数が、どの周波数のサイクルベースで記されているかを示す周波数値が管理される。デバイス1のストール481またはデバイス2のストール482のように、外バス関連のストール情報には、コンピュータと接続される外部デバイスのストール情報が管理される。   The stall cycle management unit 307 further manages stall information related to the external bus. The reference clock frequency 480 is managed as a frequency value indicating on which cycle basis the number of stall cycles related to the external bus is written. Like the stall 481 of the device 1 or the stall 482 of the device 2, the stall information related to the external bus manages the stall information of the external device connected to the computer.

ストールサイクル管理部307は、デバイスごとに条件に応じてストール情報を管理することが可能である。例えば、キャッシュラインのサイズが変更されれば転送サイズが変化し、それに応じてストールサイクル数が変化する。また、バス幅またはバースト長が変更されれば一度に転送するサイズが変化するので、それに応じてストールサイクル数が変化する。したがって、ストールサイクルキャッシュ仕様またはバスの仕様に応じて種々のストール情報を管理し、適切なストール数の情報を、疑似タイマ時間見積もり部308及び通常処理時間見積もり部309に通知することができる。   The stall cycle management unit 307 can manage stall information according to conditions for each device. For example, if the cache line size is changed, the transfer size changes, and the number of stall cycles changes accordingly. Also, if the bus width or burst length is changed, the transfer size changes at one time, and the number of stall cycles changes accordingly. Therefore, various stall information can be managed according to the stall cycle cache specification or the bus specification, and information on the appropriate number of stalls can be notified to the pseudo timer time estimation unit 308 and the normal processing time estimation unit 309.

図9は、命令実行解析部305の処理フローを示している。   FIG. 9 shows a processing flow of the instruction execution analysis unit 305.

命令実行解析部305は、ウェイト発生区間抽出部303から実行命令コードの情報を取得し(S501)、CPUバス仕様入力部304からCPU仕様の情報を取得する(S502)。   The instruction execution analysis unit 305 acquires information on the execution instruction code from the wait generation interval extraction unit 303 (S501), and acquires CPU specification information from the CPU bus specification input unit 304 (S502).

命令実行解析部305は、実行される順序で先頭の命令の実行命令コードを対象に選択する(S503)。   The instruction execution analysis unit 305 selects the execution instruction code of the first instruction in the order of execution (S503).

命令実行解析部305は、現在の実行命令コード、及び先だって実行された実行命令コードを解析し、指定されている命令であるかどうかを判定する(S504)。この判定は、ステップS502で取得したCPU仕様の情報に命令の実行並列度の情報が含まれ、並列に実行可能である命令が何であるかを実行命令コードに基づいて判断できる情報がある場合に可能である。   The instruction execution analysis unit 305 analyzes the current execution instruction code and the previously executed execution instruction code, and determines whether the instruction is a designated instruction (S504). This determination is made when the CPU specification information acquired in step S502 includes information on the instruction execution parallelism, and there is information that can determine what instruction can be executed in parallel based on the execution instruction code. Is possible.

先だって実行された命令と並列に実行可能ではない場合(S504でNo)、命令実行解析部305は、その命令を実行するのに必要なサイクル数を消費すると判断する。命令実行解析部305は、管理する命令実行回数の値を加算し(S505)、ステップS506に移る。   If the instruction cannot be executed in parallel with the previously executed instruction (No in S504), the instruction execution analysis unit 305 determines that the number of cycles necessary to execute the instruction is consumed. The instruction execution analysis unit 305 adds the value of the number of instruction executions to be managed (S505), and proceeds to step S506.

先だって実行された命令と並列に実行可能である場合(S504でYes)、命令実行解析部305は、現在の実行命令コードを解析し、分岐命令であるかどうかを判定する(S506)。その結果、現在の命令が分岐命令であると判定した場合(S506でYes)、命令実行解析部305は、管理する分岐命令回数の値を加算し(S507)、ステップS508に移る。   If the instruction can be executed in parallel with the previously executed instruction (Yes in S504), the instruction execution analysis unit 305 analyzes the current execution instruction code and determines whether the instruction is a branch instruction (S506). As a result, if it is determined that the current instruction is a branch instruction (Yes in S506), the instruction execution analysis unit 305 adds the value of the number of branch instructions to be managed (S507), and proceeds to step S508.

現在の命令が分岐命令ではないと判定した場合(S506でNo)、命令実行解析部305は、現在の実行命令コードを解析し、先だって実行された命令とデータ依存関係に基づいて、ストールが発生するかどうかを判定する(S508)。その結果、ストールが発生すると判定した場合(S508でYes)、命令実行解析部305は、管理するストール回数の値を加算し(S509)、ステップS510に移る。   If it is determined that the current instruction is not a branch instruction (No in S506), the instruction execution analysis unit 305 analyzes the current execution instruction code and a stall occurs based on the previously executed instruction and data dependency It is determined whether or not to perform (S508). As a result, if it is determined that a stall occurs (Yes in S508), the instruction execution analysis unit 305 adds the value of the number of stalls to be managed (S509), and proceeds to step S510.

ストールが発生しないと判定する場合(S508でNo)、命令実行解析部305は、現在の命令が最後の実行命令コードであるかどうかを判定する(S510)。最後の実行命令コードではないと判定する場合(S510でNo)、次に実行される実行命令コードを対象にし(S511)、ステップS504に戻り処理を繰り返す。最後の実行命令コードである場合(S510でYes)、命令実行解析部305は、算出した命令実行回数、分岐命令回数及びストール回数を、通常時間見積もり部302及び疑似タイマ時間見積もり部308に通知する(S512)。   If it is determined that a stall does not occur (No in S508), the instruction execution analysis unit 305 determines whether the current instruction is the last execution instruction code (S510). When it is determined that it is not the last execution instruction code (No in S510), the execution instruction code to be executed next is targeted (S511), and the process returns to Step S504 and is repeated. If it is the last execution instruction code (Yes in S510), the instruction execution analysis unit 305 notifies the normal time estimation unit 302 and the pseudo timer time estimation unit 308 of the calculated instruction execution count, branch instruction count, and stall count. (S512).

図10は、バスアクセス解析部306の処理フローを示している。   FIG. 10 shows a processing flow of the bus access analysis unit 306.

バスアクセス解析部306は、ウェイト発生区間抽出部303から命令フェッチに関する情報とデータアクセスに関する情報を取得し(S531)、CPUバス仕様入力部304からキャッシュ仕様情報を取得する(S532)。バスアクセス解析部306は、取得したキャッシュ仕様情報を最小のレベルのキャッシュから順に使用有りに指定されているキャッシュ仕様情報を探し、使用有りに指定される、最小のレベルのキャッシュ仕様情報を取得する(S533)。   The bus access analysis unit 306 acquires information related to instruction fetch and data access from the wait generation interval extraction unit 303 (S531), and acquires cache specification information from the CPU bus specification input unit 304 (S532). The bus access analysis unit 306 searches the acquired cache specification information for cache specification information that is designated as used in order from the lowest level cache, and acquires the minimum level of cache specification information that is designated as used. (S533).

ウェイト発生区間抽出部303は、S531で取得したすべての命令フェッチに関する動作ログ情報とデータアクセスに関する動作ログ情報を対象にする(S534)。次に、S533で取得したキャッシュ仕様情報に記されるキャッシュの方式が、統合型(ユニファイド)キャッシュであるか、分離型(ハーバード)キャッシュであるか判定する(S535)。   The wait generation interval extraction unit 303 targets the operation log information related to all instruction fetches and the operation log information related to data access acquired in S531 (S534). Next, it is determined whether the cache method described in the cache specification information acquired in S533 is a unified (unified) cache or a separated (Harvard) cache (S535).

キャッシュの方式が統合型である場合(S535でYes)、S534で対象にした命令フェッチ及びデータアクセスに関する動作ログ情報が分離されていれば、順序関係を損なわず併合する(S536)。その後、取得したキャッシュ仕様情報に基づきキャッシュシミュレートし、キャッシュヒット回数を算出し(S537)、ステップS540に移る。キャッシュ仕様情報には、キャッシュのway数、ブロック数、ラインサイズ、置換アルゴリズム、ダーティビット管理などを含んでいる。   When the cache method is the integrated type (Yes in S535), if the operation log information related to instruction fetch and data access targeted in S534 is separated, the order relation is merged (S536). Thereafter, a cache simulation is performed based on the acquired cache specification information, the number of cache hits is calculated (S537), and the process proceeds to step S540. The cache specification information includes the number of cache ways, the number of blocks, the line size, a replacement algorithm, dirty bit management, and the like.

キャッシュの方式が統合型ではない場合(S535でNo)、S534で対象にした命令フェッチ及びデータアクセスに関する動作ログ情報が併合されていれば、命令フェッチとデータアクセスに分離する(S538)。なお、ここでは、順序関係を損なわない形式で分離するものとする。その後、命令キャッシュとデータキャッシュの各々のキャッシュ仕様情報に基づきキャッシュシミュレートし、キャッシュヒット回数を算出し(S539)、ステップS540に移る。   If the cache method is not the integrated type (No in S535), if the operation log information related to instruction fetch and data access targeted in S534 is merged, the instruction fetch and data access are separated (S538). Here, the separation is performed in a format that does not impair the order relationship. Thereafter, cache simulation is performed based on the cache specification information of the instruction cache and the data cache, the number of cache hits is calculated (S539), and the process proceeds to step S540.

バスアクセス解析部306は、使用有りに指定される、次のレベルのキャッシュ仕様情報を探し存在するか判定する(S540)。次のキャッシュ仕様情報が存在すれば(S540でYes)、そのキャッシュ使用情報を取得する(S541)。その後、ステップS534あるいはステップS539のキャッシュシミュレートによりキャッシュミスしたアクセスを対象にし(S542)、ステップS535に移る。   The bus access analysis unit 306 searches for next level cache specification information designated as used and determines whether it exists (S540). If the next cache specification information exists (Yes in S540), the cache usage information is acquired (S541). Thereafter, the access that has been missed by the cache simulation in step S534 or S539 is targeted (S542), and the process proceeds to step S535.

次のキャッシュ仕様情報が存在しなければ(S540でNo)、バスアクセス解析部306は、キャッシュシミュレートを実施した、各レベルのキャッシュのキャッシュヒット回数と、最終的にキャッシュミスし外バスに出るアクセスの情報を、通常処理時間見積もり部309と疑似タイマ時間見積もり部308に通知する(S543)。   If the next cache specification information does not exist (No in S540), the bus access analysis unit 306 performs cache simulation, the number of cache hits of each level cache, and finally cache misses and exits to the external bus. The access information is notified to the normal processing time estimation unit 309 and the pseudo timer time estimation unit 308 (S543).

図11は、疑似タイマ時間見積もり部308の処理フローを示している。   FIG. 11 shows a processing flow of the pseudo timer time estimation unit 308.

疑似タイマ時間見積もり部308は、命令実行解析部305から命令実行に関するプログラム動作の解析情報を取得し、バスアクセス解析部から命令フェッチ及びデータアクセスに関する解析情報を取得する(S601)。なお、命令実行に関する解析情報とは、命令時実行回数、分岐命令回数、ストール回数の情報などである。また、命令フェッチ及びデータアクセスに関する解析情報とは、キャッシュヒット回数と外バスアクセス情報などである。この解析情報には、命令実行解析部305及びバスアクセス解析部306から出力される、疑似タイマイベントの記録に関する情報も含まれる。   The pseudo timer time estimation unit 308 obtains program operation analysis information related to instruction execution from the instruction execution analysis unit 305, and obtains instruction fetch and data access analysis information from the bus access analysis unit (S601). Note that the analysis information relating to instruction execution includes information on the number of executions at the time of instruction, the number of branch instructions, the number of stalls, and the like. The analysis information related to instruction fetch and data access includes the number of cache hits and external bus access information. This analysis information includes information regarding the recording of the pseudo timer event output from the instruction execution analysis unit 305 and the bus access analysis unit 306.

疑似タイマ時間見積もり部308は、ストールサイクル管理部307からストールサイクル管理情報を取得する(S602)。   The pseudo timer time estimation unit 308 acquires stall cycle management information from the stall cycle management unit 307 (S602).

疑似タイマ時間見積もり部308は、命令実行解析部305及びバスアクセス解析部306から取得する解析情報に含まれる、疑似タイマイベントの記録のうち、先頭の記録を選択し処理を開始する(S603)。典型的には時系列で、疑似タイマイベントの記録及び解析情報の処理を実施する。しかし、どの疑似タイマイベント間の解析情報を処理したかを管理し、すべての疑似タイマイベント間の解析情報を対象にするのであれば、時系列で処理しなくてもかまわない。   The pseudo timer time estimation unit 308 selects the first record among the pseudo timer event records included in the analysis information acquired from the instruction execution analysis unit 305 and the bus access analysis unit 306, and starts processing (S603). Typically, pseudo timer events are recorded and analysis information is processed in time series. However, if it is managed which analysis information between pseudo timer events is processed and analysis information between all pseudo timer events is targeted, it is not necessary to process in time series.

次に、疑似タイマ時間見積もり部308は、現在選択している疑似タイマイベントの記録から、その次に発生する疑似タイマイベントを検出し、その擬似タイマイベントまでの区間の解析情報を対象にする(S604)。   Next, the pseudo timer time estimation unit 308 detects a pseudo timer event that occurs next from the record of the currently selected pseudo timer event, and targets analysis information of a section up to the pseudo timer event ( S604).

疑似タイマ時間見積もり部308は、命令実行解析部305から取得した解析情報と、ストールサイクル管理部307から取得したストールサイクル管理情報に基づき、プログラムの動作時間のうちCPU実行時間を算出する(S605)。なお、命令実行解析部305から取得した解析情報とは、命令実行回数、分岐命令回数、ストール回数の情報などである。また、ストールサイクル管理情報とは、CPUクロック周波数、CPI値、分岐ペナルティ、レジスタ競合ストールの情報などである。典型的には、命令実行回数とCPI値を積算し、クロック周波数により除算することにより命令実行時間を算出する。また、分岐命令回数と分岐ペナルティのサイクル数を積算しクロック周波数により除算することにより分岐ペナルティによる時間を算出する。さらに、ストール回数とレジスタ競合ストールのサイクル数を積算し、クロック周波数により除算することによりパイプラインのストール時間を算出する。これらを合計することで、対象区間のCPU実行時間を算出することができる。   The pseudo timer time estimation unit 308 calculates the CPU execution time out of the program operation time based on the analysis information acquired from the instruction execution analysis unit 305 and the stall cycle management information acquired from the stall cycle management unit 307 (S605). . Note that the analysis information acquired from the instruction execution analysis unit 305 includes information on the number of instruction executions, the number of branch instructions, the number of stalls, and the like. The stall cycle management information includes CPU clock frequency, CPI value, branch penalty, register contention stall information, and the like. Typically, the instruction execution time is calculated by accumulating the instruction execution count and the CPI value and dividing the result by the clock frequency. In addition, the time due to the branch penalty is calculated by adding up the number of branch instructions and the number of cycles of the branch penalty and dividing by the clock frequency. Further, the number of stalls and the number of register contention stalls are integrated and divided by the clock frequency to calculate the pipeline stall time. By summing these, the CPU execution time of the target section can be calculated.

疑似タイマ時間見積もり部308は、バスアクセス解析部306から取得した解析情報と、ストールサイクル管理部307から取得したストールサイクル管理情報に基づき、プログラムの動作時間のうち各レベルのキャッシュヒット時間を算出する(S606)。なお、バスアクセス解析部306から取得した解析情報とは、各レベルのキャッシュヒット回数である。また、ストールサイクル管理部307から取得したストールサイクル管理情報とは、基準クロック周波数とキャッシュヒット時のストールの情報などである。典型的には、各レベルのキャッシュヒット回数と各レベルのキャッシュヒット時のストールサイクル数を積算し、基準クロック周波数により除算することにより、対象区間の各レベルのキャッシュヒットに要する時間を算出する。   Based on the analysis information acquired from the bus access analysis unit 306 and the stall cycle management information acquired from the stall cycle management unit 307, the pseudo timer time estimation unit 308 calculates the cache hit time of each level in the program operation time. (S606). The analysis information acquired from the bus access analysis unit 306 is the number of cache hits at each level. Further, the stall cycle management information acquired from the stall cycle management unit 307 includes information on a reference clock frequency and a stall at the time of a cache hit. Typically, the number of cache hits at each level and the number of stall cycles at the time of the cache hit at each level are integrated and divided by the reference clock frequency to calculate the time required for the cache hit at each level in the target section.

疑似タイマ時間見積もり部308は、バスアクセス解析部306から取得した解析情報と、ストールサイクル管理部307から取得したストールサイクル管理情報に基づき、各デバイスのアクセス時間を算出する(S607)。なお、バスアクセス解析部306から取得した解析情報とは、外バスアクセス情報である。また、ストールサイクル管理部307から取得したストールサイクル管理情報とは、基準クロック周波数とデバイスのストール情報などである。典型的には、外バスアクセス情報として一つ一つのアクセス要求がどのアドレスに対するアクセス要求であるかを把握し、各デバイスが配置されているアドレス空間に照らして、どのデバイスにアクセスするかを判定する。次に、アクセスするデバイスのストールサイクル管理情報を参照し、当該アクセス要求にかかるストールサイクル数と判断する。疑似タイマ時間見積もり部308は、現在対象にしている解析情報に含まれるすべての外バスアクセスに、どのデバイスに対するアクセスであるかを判定する。疑似タイマ時間見積もり部308は、アクセスするデバイスのストールサイクル数を用いて、その総和を外バスアクセスに要するサイクル数とし、基準クロック周波数により除算することにより対象区間の外バスアクセス時間を算出する。   The pseudo timer time estimation unit 308 calculates the access time of each device based on the analysis information acquired from the bus access analysis unit 306 and the stall cycle management information acquired from the stall cycle management unit 307 (S607). Note that the analysis information acquired from the bus access analysis unit 306 is external bus access information. The stall cycle management information acquired from the stall cycle management unit 307 includes a reference clock frequency and device stall information. Typically, as an external bus access information, it is determined which address each access request is an access request to, and which device is accessed according to the address space where each device is located. To do. Next, the stall cycle management information of the device to be accessed is referred to, and the number of stall cycles related to the access request is determined. The pseudo timer time estimation unit 308 determines which device is an access to all external bus accesses included in the currently analyzed analysis information. The pseudo timer time estimation unit 308 calculates the external bus access time of the target section by dividing the sum by the reference clock frequency using the total number of stall cycles of the device to be accessed as the number of cycles required for external bus access.

疑似タイマ時間見積もり部308は、ステップS605で算出したCPU実行時間と、S606で算出した各レベルのキャッシュヒットに要する時間と、及びS606で算出した外バスアクセス時間を合計して動作時間を算出する。その後、疑似タイマ時間見積もり部308は、現在対象としている疑似タイマイベントの記録として一意に識別できるように、算出した動作時間を例えばタイムスタンプと対応付け、ウェイト発生時間見積もり部310に通知する(S609)。   The pseudo timer time estimation unit 308 calculates the operation time by adding the CPU execution time calculated in step S605, the time required for each level of cache hit calculated in step S606, and the external bus access time calculated in step S606. . Thereafter, the pseudo timer time estimation unit 308 associates the calculated operation time with, for example, a time stamp and notifies the wait generation time estimation unit 310 so that the pseudo timer event can be uniquely identified as a record of the currently targeted pseudo timer event (S609). ).

以上により、本発明のプログラム性能見積もり装置は、命令を実行している区間だけでなく、コンピュータが動作を停止している区間に対する見積もりを可能にする。これにより、サイクル精度がない動作シミュレーションに基づくプログラム性能の見積もりにおいて、プログラムの動作全体の性能を見積もることができる。   As described above, the program performance estimation apparatus according to the present invention makes it possible to estimate not only a section in which an instruction is being executed but also a section in which the computer has stopped operating. Thereby, in the estimation of the program performance based on the operation simulation with no cycle accuracy, the performance of the entire program operation can be estimated.

なお、前述の説明はあらゆる点において本発明の例示に過ぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。   The above description is merely an example of the present invention in all respects, and is not intended to limit the scope thereof. It goes without saying that various improvements and modifications can be made without departing from the scope of the present invention.

本発明にかかるプログラム性能見積もり装置は、コンピュータが動作を停止している区間に対する見積もりを行う機能を有し、情報処理装置などとして有用である。また、情報機器、AV機器、通信機器、家電機器などの組み込み機器の開発ツールとして有用である。   The program performance estimation apparatus according to the present invention has a function of estimating a section in which the computer stops operating, and is useful as an information processing apparatus. Further, it is useful as a development tool for embedded devices such as information devices, AV devices, communication devices, and home appliances.

本発明の実施の形態におけるプログラム性能見積もり装置を備えた情報処理装置の構成を示す図The figure which shows the structure of the information processing apparatus provided with the program performance estimation apparatus in embodiment of this invention 本発明の実施の形態におけるプログラム疑似動作装置の構成を示すブロック図The block diagram which shows the structure of the program pseudo-operation apparatus in embodiment of this invention 本発明の実施の形態におけるプログラム動作ログに記される情報の一例を示す図The figure which shows an example of the information described in the program operation log in embodiment of this invention 本発明の実施の形態におけるプログラム性能見積もり装置の構成を示すブロック図The block diagram which shows the structure of the program performance estimation apparatus in embodiment of this invention 本発明の実施の形態におけるウェイト発生区間抽出部の動作手順の一例を示すフローチャートThe flowchart which shows an example of the operation | movement procedure of the weight generation | occurrence | production area extraction part in embodiment of this invention 本発明の実施の形態におけるCPUバス仕様入力部が読み込むCPU仕様情報の一例を示す図The figure which shows an example of the CPU specification information which the CPU bus specification input part in embodiment of this invention reads 本発明の実施の形態におけるCPUバス仕様入力部が読み込むキャッシュ仕様情報の一例を示す説明図Explanatory drawing which shows an example of the cache specification information which the CPU bus specification input part in embodiment of this invention reads 本発明の実施の形態におけるストールサイクル管理部が管理するストールサイクル管理情報の一例を示す図The figure which shows an example of the stall cycle management information which the stall cycle management part in embodiment of this invention manages 本発明の実施の形態における命令実行解析部の動作手順の一例を示すフローチャートThe flowchart which shows an example of the operation | movement procedure of the instruction execution analysis part in embodiment of this invention 本発明の実施の形態におけるバスアクセス解析部の動作手順の一例を示すフローチャートThe flowchart which shows an example of the operation | movement procedure of the bus access analysis part in embodiment of this invention 本発明の実施の形態における疑似タイマ時間見積もり部の動作手順の一例を示すフローチャートThe flowchart which shows an example of the operation | movement procedure of the pseudo timer time estimation part in embodiment of this invention

符号の説明Explanation of symbols

1,11,12,13 CPU
2 メモリ装置
10 プログラム性能見積もり装置
21 ROM
22 RAM
25 ハードディスク装置
26,35,41,46 インタフェース
31 記録媒体
32 読み取り装置
33 電気通信回線
34 通信装置
40 入力装置
45 表示装置
50 バスライン
51 タイマ回路
55 割り込みコントローラ
70 プログラム擬似動作装置
80 プログラム性能見積もり装置
201 命令実行検出部
202 命令フェッチ要求検出部
203 データアクセス要求検出部
204 ウェイト発生監視部
205 疑似タイマ記録部
206 プログラム動作ログ出力部
301 プログラム動作ログ入力部
303 ウェイト発生区間抽出部
304 CPU・バス仕様入力部
305 命令実行解析部
306 バスアクセス解析部
307 ストールサイクル管理部
308 疑似タイマ時間見積もり部
309 通常処理時間見積もり部
310 ウェイト発生時間見積もり部
311 見積もり時間提示部
1, 11, 12, 13 CPU
2 Memory device 10 Program performance estimation device 21 ROM
22 RAM
Reference Signs List 25 hard disk device 26, 35, 41, 46 interface 31 recording medium 32 reading device 33 electric communication line 34 communication device 40 input device 45 display device 50 bus line 51 timer circuit 55 interrupt controller 70 program simulation operation device 80 program performance estimation device 201 Instruction execution detection unit 202 Instruction fetch request detection unit 203 Data access request detection unit 204 Wait generation monitoring unit 205 Pseudo timer recording unit 206 Program operation log output unit 301 Program operation log input unit 303 Wait generation period extraction unit 304 CPU / bus specification input Section 305 Instruction execution analysis section 306 Bus access analysis section 307 Stall cycle management section 308 Pseudo timer time estimation section 309 Normal processing time estimation section 310 Wait Occurrence time estimation part 311 Estimated time presentation part

Claims (4)

コンピュータ上で動作するプログラムの動作性能を見積もるプログラム性能見積もり装置であって、
プログラムの動作に関する命令実行とデータアクセスに関する情報、ウェイトの発生とイベント発生の情報を取得するプログラム動作情報入力部と、
前記プログラム動作情報入力部から取得したプログラム動作情報のうち、ウェイトが発生する区間とウェイトが発生しない区間を判別し抽出するウェイト発生区間抽出部と、
前記ウェイト発生区間抽出部から取得したウェイトが発生しない区間のプログラム動作情報と、SoCの仕様情報に基づき、命令実行とストールを解析する命令実行解析部と、
前記ウェイト発生区間抽出部から取得したプログラム動作情報と、SoCの仕様情報に基づき、データアクセス要求に対するキャッシュヒットとバスアクセスを解析するバスアクセス解析部と、
前記命令実行解析部から命令実行解析結果と前記バスアクセス解析部からバスアクセス解析結果を取得し、前記命令実行解析部と前記バスアクセス解析部からイベント発生の情報を取得し、前記解析結果とストールサイクル情報に基づきイベント間の動作時間を見積もるイベント間見積もり部と、
前記イベント間見積もり部から取得したイベント間の動作時間と、前記ウェイト発生区間抽出部から取得したウェイトが発生した区間のプログラム動作情報に基づき、ウェイトが発生した時間を見積もるウェイト発生時間見積もり部を備えることを特徴とするプログラム性能見積もり装置。
A program performance estimation device for estimating the performance of a program running on a computer,
Information on instruction execution and data access related to program operation, program operation information input unit for acquiring information on occurrence of wait and event occurrence,
Of the program operation information acquired from the program operation information input unit, a weight generation interval extraction unit that determines and extracts an interval in which a weight is generated and an interval in which no weight is generated;
An instruction execution analysis unit for analyzing instruction execution and stall based on program operation information of a section in which no weight is acquired, obtained from the wait generation section extraction unit, and SoC specification information;
A bus access analysis unit for analyzing a cache hit and a bus access for a data access request based on the program operation information acquired from the wait generation section extraction unit and the SoC specification information;
An instruction execution analysis result is acquired from the instruction execution analysis unit and a bus access analysis result is acquired from the bus access analysis unit, event occurrence information is acquired from the instruction execution analysis unit and the bus access analysis unit, and the analysis result and stall An inter-event estimator that estimates the operating time between events based on cycle information;
A wait generation time estimation unit for estimating a time at which a weight is generated based on an operation time between events acquired from the inter-event estimation unit and a program operation information of a section in which a weight is acquired from the wait generation interval extraction unit; An apparatus for estimating program performance.
コンピュータ上で動作するプログラムの動作性能を見積もるプログラム性能見積もり方法であって、
プログラムの動作に関する命令実行とデータアクセスに関する情報、ウェイトの発生とイベント発生の情報を取得するプログラム動作情報入力ステップと、
前記プログラム動作情報入力部から取得したプログラム動作情報のうち、ウェイトが発生する区間とウェイトが発生しない区間を判別し抽出するウェイト発生区間抽出ステップと、
前記ウェイト発生区間抽出部から取得したウェイトが発生しない区間のプログラム動作情報と、SoCの仕様情報に基づき、命令実行とストールを解析する命令実行解析ステップと、
前記ウェイト発生区間抽出部から取得したプログラム動作情報と、SoCの仕様情報に基づき、データアクセス要求に対するキャッシュヒットとバスアクセスを解析するバスアクセス解析ステップと
前記命令実行解析部から命令実行解析結果と前記バスアクセス解析部からバスアクセス解析結果を取得し、前記命令実行解析部と前記バスアクセス解析部からイベント発生の情報を取得し、前記解析結果とストールサイクル情報に基づきイベント間の動作時間を見積もるイベント間見積もりステップと、
前記イベント間見積もり部から取得したイベント間の動作時間と、前記ウェイト発生区間抽出部から取得したウェイトが発生した区間のプログラム動作情報に基づき、ウェイトが発生した時間を見積もるウェイト発生時間見積もりステップとを備えることを特徴とするプログラム性能見積もり方法。
A program performance estimation method for estimating the performance of a program running on a computer,
Program operation information input step for obtaining information on instruction execution and data access related to program operation, information on occurrence of wait and event occurrence,
Of the program operation information acquired from the program operation information input unit, a weight generation interval extraction step for discriminating and extracting an interval in which a weight is generated and an interval in which no weight is generated;
An instruction execution analysis step for analyzing instruction execution and stall based on program operation information in a section where no weight is acquired, obtained from the wait generation section extraction unit, and SoC specification information;
A bus access analyzing step of analyzing a cache hit and a bus access for a data access request based on the program operation information acquired from the wait generation interval extracting unit and the SoC specification information; an instruction execution analysis result from the instruction execution analyzing unit; An event that acquires a bus access analysis result from the bus access analysis unit, acquires event occurrence information from the instruction execution analysis unit and the bus access analysis unit, and estimates an operation time between events based on the analysis result and stall cycle information An interim estimation step;
A wait generation time estimation step for estimating a time at which a wait occurs based on the operation time between events acquired from the inter-event estimation unit and the program operation information of the interval in which the wait acquired from the wait generation interval extraction unit is generated. A program performance estimation method characterized by comprising:
コンピュータ上で動作するプログラムの動作性能を見積もるプログラム性能見積もりのプログラムであって、
プログラムの動作に関する命令実行とデータアクセスに関する情報、ウェイトの発生とイベント発生の情報を取得するプログラム動作情報入力ステップと、
前記プログラム動作情報入力部から取得したプログラム動作情報のうち、ウェイトが発生する区間とウェイトが発生しない区間を判別し抽出するウェイト発生区間抽出ステップと、
前記ウェイト発生区間抽出部から取得したウェイトが発生しない区間のプログラム動作情報と、SoCの仕様情報に基づき、命令実行とストールを解析する命令実行解析ステップと、
前記ウェイト発生区間抽出部から取得したプログラム動作情報と、SoCの仕様情報に基づき、データアクセス要求に対するキャッシュヒットとバスアクセスを解析するバスアクセス解析ステップと
前記命令実行解析部から命令実行解析結果と前記バスアクセス解析部からバスアクセス解析結果を取得し、前記命令実行解析部と前記バスアクセス解析部からイベント発生の情報を取得し、前記解析結果とストールサイクル情報に基づきイベント間の動作時間を見積もるイベント間見積もりステップと、
前記イベント間見積もり部から取得したイベント間の動作時間と、前記ウェイト発生区間抽出部から取得したウェイトが発生した区間のプログラム動作情報に基づき、ウェイトが発生した時間を見積もるウェイト発生時間見積もりステップとを備えることを特徴とするプログラム性能見積もりのプログラム。
A program for estimating the performance of a program running on a computer,
Program operation information input step for obtaining information on instruction execution and data access related to program operation, information on occurrence of wait and event occurrence,
Of the program operation information acquired from the program operation information input unit, a weight generation interval extraction step for discriminating and extracting an interval in which a weight is generated and an interval in which no weight is generated;
An instruction execution analysis step for analyzing instruction execution and stall based on program operation information in a section where no weight is acquired, obtained from the wait generation section extraction unit, and SoC specification information;
A bus access analyzing step of analyzing a cache hit and a bus access for a data access request based on the program operation information acquired from the wait generation interval extracting unit and the SoC specification information; an instruction execution analysis result from the instruction execution analyzing unit; An event that acquires a bus access analysis result from the bus access analysis unit, acquires event occurrence information from the instruction execution analysis unit and the bus access analysis unit, and estimates an operation time between events based on the analysis result and stall cycle information An interim estimation step;
A wait generation time estimation step for estimating a time at which a wait occurs based on the operation time between events acquired from the inter-event estimation unit and the program operation information of the interval in which the wait acquired from the wait generation interval extraction unit is generated. A program for estimating program performance, comprising:
コンピュータ上で動作するプログラムの動作性能を見積もるプログラム性能見積もりのプログラムを記録した媒体であって、
プログラムの動作に関する命令実行とデータアクセスに関する情報、ウェイトの発生とイベント発生の情報を取得するプログラム動作情報入力ステップと、
前記プログラム動作情報入力部から取得したプログラム動作情報のうち、ウェイトが発生する区間とウェイトが発生しない区間を判別し抽出するウェイト発生区間抽出ステップと、
前記ウェイト発生区間抽出部から取得したウェイトが発生しない区間のプログラム動作情報と、SoCの仕様情報に基づき、命令実行とストールを解析する命令実行解析ステップと、
前記ウェイト発生区間抽出部から取得したプログラム動作情報と、SoCの仕様情報に基づき、データアクセス要求に対するキャッシュヒットとバスアクセスを解析するバスアクセス解析ステップと
前記命令実行解析部から命令実行解析結果と前記バスアクセス解析部からバスアクセス解析結果を取得し、前記命令実行解析部と前記バスアクセス解析部からイベント発生の情報を取得し、前記解析結果とストールサイクル情報に基づきイベント間の動作時間を見積もるイベント間見積もりステップと、
前記イベント間見積もり部から取得したイベント間の動作時間と、前記ウェイト発生区間抽出部から取得したウェイトが発生した区間のプログラム動作情報に基づき、ウェイトが発生した時間を見積もるウェイト発生時間見積もりステップとを備えることを特徴とするプログラム性能見積もりのプログラムを記録した記録媒体。
A medium in which a program performance estimation program for estimating the performance of a program running on a computer is recorded,
Program operation information input step for obtaining information on instruction execution and data access related to program operation, information on occurrence of wait and event occurrence,
Of the program operation information acquired from the program operation information input unit, a weight generation interval extraction step for discriminating and extracting an interval in which a weight is generated and an interval in which no weight is generated;
An instruction execution analysis step for analyzing instruction execution and stall based on program operation information in a section where no weight is acquired, obtained from the wait generation section extraction unit, and SoC specification information;
A bus access analyzing step of analyzing a cache hit and a bus access for a data access request based on the program operation information acquired from the wait generation interval extracting unit and the SoC specification information; an instruction execution analysis result from the instruction execution analyzing unit; An event that acquires a bus access analysis result from the bus access analysis unit, acquires event occurrence information from the instruction execution analysis unit and the bus access analysis unit, and estimates an operation time between events based on the analysis result and stall cycle information An interim estimation step;
A wait generation time estimation step for estimating a time at which a wait occurs based on the operation time between events acquired from the inter-event estimation unit and the program operation information of the interval in which the wait acquired from the wait generation interval extraction unit is generated. A recording medium on which a program for estimating program performance is recorded.
JP2008165558A 2008-06-25 2008-06-25 Program performance estimation device Pending JP2010009175A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008165558A JP2010009175A (en) 2008-06-25 2008-06-25 Program performance estimation device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008165558A JP2010009175A (en) 2008-06-25 2008-06-25 Program performance estimation device

Publications (1)

Publication Number Publication Date
JP2010009175A true JP2010009175A (en) 2010-01-14

Family

ID=41589623

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008165558A Pending JP2010009175A (en) 2008-06-25 2008-06-25 Program performance estimation device

Country Status (1)

Country Link
JP (1) JP2010009175A (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018163387A1 (en) * 2017-03-09 2018-09-13 三菱電機株式会社 Analysis device, analysis method, and analysis program

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018163387A1 (en) * 2017-03-09 2018-09-13 三菱電機株式会社 Analysis device, analysis method, and analysis program
JPWO2018163387A1 (en) * 2017-03-09 2019-03-14 三菱電機株式会社 Analysis apparatus, analysis method, and analysis program

Similar Documents

Publication Publication Date Title
JP5119994B2 (en) Performance monitoring program, performance monitoring method, performance monitoring device
JP5686904B2 (en) Operating information prediction computer, operating information prediction method and program
JP2006004211A (en) Performance analysis method using hardware monitor
JP4996624B2 (en) Detection apparatus, system, program, and detection method
US20170212844A1 (en) Measuring address translation latency
US7519510B2 (en) Derivative performance counter mechanism
KR102161192B1 (en) Method and apparatus for data mining from core trace
JP6790913B2 (en) Information processing equipment, information processing methods and programs
CA2800271A1 (en) System test method
JP2017167930A (en) Information processing device, power measurement method and power measurement program
JP4940996B2 (en) Profiling device and profiling program
US9959191B2 (en) Dynamic library profiling method and dynamic library profiling system
US20080010555A1 (en) Method and Apparatus for Measuring the Cost of a Pipeline Event and for Displaying Images Which Permit the Visualization orf Said Cost
JP6544054B2 (en) INFORMATION PROCESSING APPARATUS, EXECUTION INFORMATION RECORDING PROGRAM, AND EXECUTION INFORMATION RECORDING METHOD
US8868886B2 (en) Task switch immunized performance monitoring
JP2010009175A (en) Program performance estimation device
US20110107072A1 (en) Method for self-diagnosing system management interrupt handler
CN107423206B (en) Method and device for measuring system management interruption time
JP2009217385A (en) Processor and multiprocessor
JP2005215816A (en) Performance profiling method using hardware monitor
WO2012056569A1 (en) Performance measurement method, performance measurement device, and performance measurement program
KR102210544B1 (en) Method of analyzing a fault of an electronic system
JP6213309B2 (en) Information processing apparatus, performance information collecting program for information processing apparatus, and performance information collecting method for information processing apparatus
US20190146892A1 (en) Computer, bottleneck identification method, and non-transitory computer readable storage medium
JP2022133094A (en) Anomaly factor determination method and anomaly factor determination program