WO2018158846A1 - シミュレーション装置、シミュレーション方法およびシミュレーションプログラム - Google Patents

シミュレーション装置、シミュレーション方法およびシミュレーションプログラム Download PDF

Info

Publication number
WO2018158846A1
WO2018158846A1 PCT/JP2017/007943 JP2017007943W WO2018158846A1 WO 2018158846 A1 WO2018158846 A1 WO 2018158846A1 JP 2017007943 W JP2017007943 W JP 2017007943W WO 2018158846 A1 WO2018158846 A1 WO 2018158846A1
Authority
WO
WIPO (PCT)
Prior art keywords
address
simulation
function
unit
original
Prior art date
Application number
PCT/JP2017/007943
Other languages
English (en)
French (fr)
Inventor
翔平 小山
大佑 小川
正勝 外山
Original Assignee
三菱電機株式会社
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 三菱電機株式会社 filed Critical 三菱電機株式会社
Priority to DE112017006932.7T priority Critical patent/DE112017006932B4/de
Priority to US16/475,308 priority patent/US20190369997A1/en
Priority to PCT/JP2017/007943 priority patent/WO2018158846A1/ja
Priority to JP2019502337A priority patent/JP6545417B2/ja
Publication of WO2018158846A1 publication Critical patent/WO2018158846A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/321Program or instruction counter, e.g. incrementing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1004Compatibility, e.g. with legacy hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1008Correctness of operation, e.g. memory ordering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement

Definitions

  • the present invention relates to a simulation apparatus, a simulation method, and a simulation program.
  • the present invention relates to a simulation apparatus, a simulation method, and a simulation program for simulating program execution in the development of embedded devices.
  • Patent Document 1 discloses a technique for measuring performance when data on a memory is rearranged using a performance evaluation simulator.
  • Patent Document 1 it is not possible to efficiently perform performance evaluation when sharing duplicate codes.
  • refactoring software to improve performance and sharing duplicate code, man-hours are required to change the data reference relationship or function interface.
  • the duplicate code refers to an instruction code of a function that performs similar processing. If there is no performance improvement due to refactoring, the man-hour required for refactoring is wasted.
  • the present invention provides a simulation apparatus capable of evaluating performance when a duplicate code is virtually shared.
  • a simulation apparatus is a simulation apparatus for executing a simulation of a program including a first function and a second function that are similar to each other.
  • a first start address that is a start address of the instruction sequence of the first function, a first end address that is an end address of the instruction sequence of the first function, and a second address that is a start address of the instruction sequence of the second function
  • An address information storage unit that stores address information in which a start address is associated with a second end address that is an end address of the instruction sequence of the second function;
  • An address of an instruction sequence for executing a simulation is acquired as an original address, and using the address information, it is determined whether the original address is between the first start address and the first end address, and the original address Is located between the first start address and the first end address, the original address is relocated between the second start address and the second end address, and the relocated address is processed.
  • An address relocation unit as an address;
  • the simulation apparatus executes a simulation of a program including a first function and a second function that are similar to each other.
  • the address information storage unit includes a first start address that is a start address of the instruction sequence of the first function, a first end address that is an end address of the instruction sequence of the first function, and a start address of the instruction sequence of the second function. Address information that associates a certain second start address with a second end address that is the end address of the instruction sequence of the second function is stored.
  • the address rearrangement unit rearranges the original address as a processing address between the second start address and the second end address when the original address is between the first start address and the first end address.
  • the evaluation unit executes a cache simulation for the processing address, and evaluates whether it is a cache hit or a cache miss. Therefore, according to the simulation apparatus of the present invention, it is possible to evaluate the performance when the duplicate code is virtually shared before refactoring the program, and to suppress the occurrence of useless refactoring. .
  • FIG. 1 is a configuration diagram of a simulation apparatus 100 according to Embodiment 1.
  • FIG. FIG. 3 is a configuration diagram of address information 421 according to the first embodiment.
  • FIG. 5 is a flowchart of a simulation process S100 of a simulation method 610 and a simulation program 620 according to the first embodiment.
  • FIG. 6 is a flowchart of address relocation processing S20 according to the first embodiment.
  • FIG. 6 is a configuration diagram of a simulation apparatus 100 according to a modification of the first embodiment.
  • Embodiment 1 FIG. *** Explanation of configuration *** The configuration of the simulation apparatus 100 according to the present embodiment will be described with reference to FIG.
  • the simulation apparatus 100 according to the present embodiment executes a simulation of a program 200 including a first function 10 and a second function 20 that are similar to each other.
  • the first function 10 and the second function 20 that are similar to each other are also referred to as overlapping codes.
  • the simulation apparatus 100 can evaluate the performance when the duplicate code is virtually shared.
  • Duplicate code refers to a plurality of functions performing similar processing.
  • the first function 10 is also referred to as a common function 101 that is a function to be shared.
  • the second function 20 is also referred to as a common destination function 201 that is a destination function to be shared.
  • cache simulation is performed assuming that the shared function 101 is shared by the shared destination function 201, which is one function to be shared, It is to determine whether it is a hit or a cache miss.
  • the simulation apparatus 100 is a computer.
  • the simulation apparatus 100 includes hardware such as a processor 910, a storage device 920, an input interface 930, and an output interface 940.
  • the storage device 920 includes a memory 921 and an auxiliary storage device 922.
  • the simulation apparatus 100 includes an instruction execution unit 110, an address relocation unit 120, an evaluation unit 130, and a storage unit 140 as functional configurations.
  • the storage unit 140 includes an instruction storage unit 141 and an address information storage unit 142.
  • the address information storage unit 142 stores address information 421.
  • the functions of the instruction execution unit 110, the address relocation unit 120, and the evaluation unit 130 are realized by software.
  • the storage unit 140 is realized by the memory 921.
  • the storage unit 140 may be realized only by the auxiliary storage device 922 or by the memory 921 and the auxiliary storage device 922. A method for realizing the storage unit 140 is arbitrary.
  • the processor 910 is connected to other hardware via a signal line, and controls these other hardware.
  • the processor 910 is an IC (Integrated Circuit) that performs arithmetic processing.
  • Specific examples of the processor 910 are a CPU (Central Processing Unit), a DSP (Digital Signal Processor), and a GPU (Graphics Processing Unit).
  • the memory 921 is a storage device that temporarily stores data. Specific examples of the memory 921 are SRAM (Static Random Access Memory) and DRAM (Dynamic Random Access Memory).
  • the auxiliary storage device 922 is a storage device that stores data.
  • a specific example of the auxiliary storage device 922 is an HDD (Hard Disk Drive).
  • the auxiliary storage device 922 includes an SD (registered trademark) (Secure Digital) memory card, a CF (Compact Flash), a NAND flash, a flexible disk, an optical disk, a compact disk, a Blu-ray (registered trademark) disk, a DVD (Digital Versatile Disk), and the like. It may be a portable storage medium.
  • the input interface 930 is a port connected to input devices such as a mouse, a keyboard, and a touch panel. Specifically, the input interface 930 is a USB (Universal Serial Bus) terminal. The input interface 930 may be a port connected to a LAN (Local Area Network). The input interface 930 acquires the program 200 and passes it to the instruction execution unit 110.
  • input devices such as a mouse, a keyboard, and a touch panel.
  • the input interface 930 is a USB (Universal Serial Bus) terminal.
  • the input interface 930 may be a port connected to a LAN (Local Area Network).
  • the input interface 930 acquires the program 200 and passes it to the instruction execution unit 110.
  • the output interface 940 is a port to which a cable of a display device such as a display is connected.
  • the output interface 940 is a USB terminal or an HDMI (registered trademark) (High Definition Multimedia interface) terminal.
  • the display is an LCD (Liquid Crystal Display).
  • the auxiliary storage device 922 stores programs for realizing the functions of the instruction execution unit 110, the address relocation unit 120, and the evaluation unit 130.
  • a program that realizes the functions of the instruction execution unit 110, the address relocation unit 120, and the evaluation unit 130 is also referred to as a simulation program 620.
  • This program is loaded into the memory 921, read into the processor 910, and executed by the processor 910.
  • the auxiliary storage device 922 stores an OS. At least a part of the OS stored in the auxiliary storage device 922 is loaded into the memory 921.
  • the processor 910 executes the simulation program 620 while executing the OS.
  • the simulation apparatus 100 may include only one processor 910, or may include a plurality of processors 910.
  • the plurality of processors 910 may execute programs that realize the functions of the instruction execution unit 110, the address relocation unit 120, and the evaluation unit 130 in cooperation with each other.
  • Information, data, signal values, and variable values indicating the results of processing of the instruction execution unit 110, the address relocation unit 120, and the evaluation unit 130 are the auxiliary storage device 922, the memory 921, or the simulation device 100, respectively. Stored in a register or cache memory within processor 910.
  • Programs that realize the functions of the instruction execution unit 110, the address relocation unit 120, and the evaluation unit 130 may be stored in a portable recording medium.
  • the portable recording medium includes a magnetic disk, a flexible disk, an optical disk, a compact disk, a Blu-ray (registered trademark) disk, and a DVD (Digital Versatile Disc).
  • the simulation program product is a storage medium and storage device on which the simulation program 620 is recorded.
  • a simulation program product refers to a program loaded with a computer-readable program regardless of its appearance.
  • the instruction execution unit 110 converts the instruction code of the processor of the simulation target machine into an instruction code of the machine that executes the simulation, that is, the processor of the simulation apparatus 100, and executes the converted instruction code.
  • the simulation target machine is also referred to as a target machine.
  • the processor of the simulation target machine is also called a target CPU.
  • a machine that executes simulation is also called a host machine.
  • the processor of the machine that executes the simulation is also called a host CPU. That is, the instruction execution unit 110 converts the instruction code of the target CPU of the target machine into the instruction code of the host CPU of the host machine, and executes the converted instruction code.
  • the instruction execution unit 110 is also referred to as an ISS (Instruction Set Simulator) instruction execution unit.
  • the instruction storage unit 141 stores software information used in the simulation.
  • the instruction storage unit 141 acquires an instruction address that is an address of an instruction code to be executed next by the instruction execution unit 110 from the instruction execution unit 110, and passes the instruction code recorded at the acquired instruction address to the instruction execution unit 110. .
  • the address information storage unit 142 includes a first start address t_start that is the start address of the instruction sequence of the common function 101, a first end address t_end that is the end address of the instruction sequence of the common function 101, and the common destination function 201.
  • the second start address trans and the second end address trans_end of the common destination function 201 are set corresponding to the first start address t_start and the first end address t_end of the common function 101.
  • the address information 421 is also referred to as an address relocation table.
  • the address rearrangement unit 120 acquires the instruction address from the instruction execution unit 110 as the original address 111, and rearranges the original address 111 to the processing address 121.
  • the address rearrangement unit 120 rearranges the original address 111 to the processing address 121 based on the address information 421 and outputs the processing address 121 to the evaluation unit 130.
  • the evaluation unit 130 simulates the function of the instruction cache. When the instruction address is input, the evaluation unit 130 determines whether or not the instruction code of the instruction address is stored in the instruction cache. Saving the instruction code of the input instruction address in the instruction cache is called a cache hit, and not storing the instruction code in the instruction cache is called a cache miss. The evaluation unit 130 performs a cache simulation on the input instruction address and determines whether it is a cache hit or a cache miss. The evaluation unit 130 executes a cache simulation for the processing address 121 output from the address relocation unit 120 and determines whether it is a cache hit or a cache miss. The evaluation unit 130 is also referred to as an instruction cache model.
  • the corresponding index is calculated based on the cache size, line length, and number of ways for the input address, and the target data in the cache is calculated based on the calculated index. Is a process of determining whether or not exists and returning the determination result.
  • the simulation method 610 and the simulation process S100 of the simulation program 620 according to the present embodiment will be described with reference to FIG.
  • the simulation process S100 includes an instruction execution process S10, an address relocation process S20, and a cache simulation process S30.
  • step S ⁇ b> 11 the instruction execution unit 110 outputs the address of the next instruction for executing the simulation to the address relocation unit 120 as the instruction address 11. Further, the instruction execution unit 110 outputs the instruction address 11 to the instruction storage unit 141 of the storage unit 140. In step S ⁇ b> 12, the instruction storage unit 141 acquires an instruction address from the instruction execution unit 110 and passes the instruction code indicated by the instruction address to the instruction execution unit 110.
  • step S ⁇ b> 13 the address relocation unit 120 acquires the instruction address 11 from the instruction execution unit 110 as the original address 111.
  • the address relocation unit 120 refers to the address information 421 in the storage unit 140 and determines whether or not the instruction code pointed to by the original address 111 is included in the common function 101.
  • the address relocation unit 120 proceeds to step S14. If the instruction code pointed to by the original address 111 is not included in the common function 101, the address relocation unit 120 proceeds to step S15.
  • step S ⁇ b> 14 the address rearrangement unit 120 rearranges the original address 111 to an address indicating the instruction code of the common destination function 201 and outputs it as the processing address 121.
  • step S ⁇ b> 15 the evaluation unit 130 performs a cache simulation on the processing address 121 output from the address relocation unit 120 and determines whether it is a cache hit or a cache miss.
  • the address rearrangement unit 120 acquires the address of the instruction sequence for executing the simulation as the original address 111, and the original address 111 is set to the first start address t_start and the first end using the address information 421. It is determined whether it is between the address t_end. When the original address 111 is between the first start address t_start and the first end address t_end, the address rearrangement unit 120 relocates the original address 111 between the second start address trans and the second end address trans_end. The arranged and rearranged address is set as a processing address 121.
  • step S ⁇ b> 21 the address relocation unit 120 determines whether or not the original address 111 is included in the address range of the common function 101. Specifically, the address relocation unit 120 uses the address information 421 to change the original address 111 from the v_start0 that is the first start address t_start of the common function 101 to the first end address t_end of the common function 101. It is determined whether the address is between a certain v_end0. When the original address 111 is included in the address range of the common function 101, the address relocation unit 120 proceeds to step S22. If the original address 111 is not included in the address range of the common function 101, the address relocation unit 120 ends the process.
  • the address relocation unit 120 calculates an offset value offset from the first start address t_start for the original address 111 when the original address 111 is between the first start address t_start and the first end address t_end. To do. Specifically, the address relocation unit 120 calculates a value from v_start0 to the original address 111 as an offset value offset with reference to v_start0 that is the first start address t_start. In step S23, the address relocation unit 120 calculates an address obtained by adding the offset value offset to the second start address trans as the relocation address addr ′. Specifically, the address relocation unit 120 adds the offset value offset to the start address 0 that is the second start address trans to obtain a relocation address addr ′. The address rearrangement unit 120 adds the offset value offset to the second start address trans of the common destination function 201, so that the original address 111 is changed to an address assumed to change when the function is standardized. Rearrange.
  • step S ⁇ b> 24 the address relocation unit 120 determines whether the relocation address addr ′ is included in the address range of the common destination function 201. Specifically, the address relocation unit 120 determines whether the relocation address addr ′ is less than end0 that is the second end address trans_end of the common destination function 201. If the rearrangement address addr ′ is less than the second end address trans_end, the address rearrangement unit 120 outputs the rearrangement address addr ′ as the processing address 121 in step S26 and ends the process. If the relocated address addr ′ is equal to or greater than the second end address trans_end, the address relocation unit 120 sets the second end address trans_end as the processing address 121 in step S25. That is, the address relocation unit 120 clips, that is, changes the relocation address addr ′ to end0 that is the second end address trans_end.
  • the functions of the instruction execution unit 110, the address relocation unit 120, and the evaluation unit 130 are realized by software. However, as a modification, the functions of the instruction execution unit 110, the address relocation unit 120, and the evaluation unit 130 may be realized by hardware.
  • the simulation apparatus 100 includes hardware such as a processing circuit 909, an input interface 930, and an output interface 940.
  • the processing circuit 909 is a dedicated electronic circuit that realizes the functions of the instruction execution unit 110, the address relocation unit 120, the evaluation unit 130, and the storage unit 140 described above. Specifically, the processing circuit 909 is a single circuit, a composite circuit, a programmed processor, a parallel programmed processor, a logic IC, a GA, an ASIC, or an FPGA.
  • GA is an abbreviation for Gate Array.
  • ASIC is an abbreviation for Application Specific Integrated Circuit.
  • FPGA is an abbreviation for Field-Programmable Gate Array.
  • the functions of the instruction execution unit 110, the address relocation unit 120, and the evaluation unit 130 may be realized by a single processing circuit 909 or may be realized by being distributed to a plurality of processing circuits 909.
  • the functions of the instruction execution unit 110, the address relocation unit 120, and the evaluation unit 130 may be realized by a combination of software and hardware.
  • some functions of the simulation apparatus 100 may be realized by dedicated hardware, and the remaining functions may be realized by software.
  • the processor 910, the storage device 920, and the processing circuit 909 of the simulation apparatus 100 are collectively referred to as “processing circuit”. That is, regardless of the configuration of the simulation apparatus 100 shown in FIGS. 1 and 5, the instruction execution unit 110, the address relocation unit 120, the function of the evaluation unit 130, and the storage unit 140 may be a processing circuit. Realized by
  • Part may be read as “Process” or “Procedure” or “Process”. Further, the function of “unit” may be realized by firmware.
  • the address rearrangement unit rearranges the original address between the start address and the end address of the common destination function when the input original address indicates the common function. . Then, the evaluation unit performs a cache simulation on the rearranged address, and determines whether it is a cache hit or a cache miss. Therefore, according to the simulation apparatus 100 according to the present embodiment, it is possible to evaluate the performance when the duplicate code is virtually shared before refactoring the software. Therefore, according to the simulation apparatus 100 according to the present embodiment, it is possible to suppress wasting the man-hour required for refactoring.
  • the simulation apparatus 100 measures performance information when the detected duplicate code is shared based on the processing result of the static analysis tool that detects the duplicate code in the software. Therefore, according to the simulation apparatus 100 according to the present embodiment, it is possible to evaluate the performance when the duplicate code is virtually shared more efficiently.
  • each unit of the simulation apparatus 100 configures the simulation apparatus 100 as an independent functional block.
  • the configuration of the simulation apparatus 100 is not limited to the configuration described in the above embodiment.
  • the functional blocks of the simulation apparatus 100 are arbitrary as long as the functions described in the above-described embodiments can be realized.
  • the simulation apparatus 100 may be configured by any other combination of these functional blocks or an arbitrary block configuration. Further, the simulation apparatus 100 may be a system constituted by a plurality of apparatuses instead of a single apparatus.
  • Embodiment 1 was described, you may implement combining several parts among this Embodiment. Alternatively, one part of this embodiment may be implemented. In addition, this embodiment may be implemented in any combination as a whole or in part.
  • the above-described embodiment is essentially a preferable example, and is not intended to limit the scope of the present invention, the scope of the application of the present invention, and the scope of use of the present invention. The embodiment described above can be variously modified as necessary.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)

Abstract

シミュレーション装置(100)は、互いに類似する第1関数(10)と第2関数(20)を含むプログラムのシミュレーションを実行する。アドレス情報記憶部(142)は、第1関数の第1開始アドレスおよび第1終了アドレスと、第2関数の第2開始アドレスおよび第2終了アドレスとを対応付けたアドレス情報(421)を記憶する。アドレス再配置部(120)は、オリジナルアドレス(111)が第1開始アドレスと第1終了アドレスとの間にある場合に、オリジナルアドレス(111)を第2開始アドレスと第2終了アドレスとの間に処理アドレス(121)として再配置する。評価部(130)は、処理アドレス(121)についてキャッシュシミュレーションを実行し、キャッシュヒットかキャッシュミスかを評価する。

Description

シミュレーション装置、シミュレーション方法およびシミュレーションプログラム
 本発明は、シミュレーション装置、シミュレーション方法およびシミュレーションプログラムに関する。特に、組み込み機器の開発におけるプログラムの実行をシミュレートするシミュレーション装置、シミュレーション方法およびシミュレーションプログラムに関する。
 近年の組み込み機器は、高性能なプロセッサを採用しているため、キャッシュあるいは条件分岐といった機能によって与えられる影響が大きい。このような機能を効率的に利用するソフトウェアを実装した場合、ユーザの想定通りのハードウェア性能を満たす。一方、このような機能を十分に利用できないソフトウェアを実装した場合、ユーザの想定通りのハードウェア性能を満たせない。このため、性能低下を引き起こすソフトウェアの処理を検出し、ハードウェアが持つ機能を効率的に利用できるソフトウェアに改善する必要がある。
 特許文献1には、性能評価シミュレータを使って、メモリ上のデータを並び替えた際の性能を計測する技術が開示されている。
特開2014-142682号公報
 特許文献1では、重複コードを共通化する際の性能評価を効率的に行うことができない。性能向上のためにソフトウェアのリファクタリングを行い、重複コードを共通化する場合、データの参照関係あるいは関数のインタフェースを変更するための工数が必要となる。重複コードとは、類似処理を行っている関数の命令コードを指す。リファクタリングによる性能向上が無い場合、リファクタリングにかかった工数が無駄となる。
 本発明は、重複コードを仮想的に共通化した際の性能を評価することができるシミュレーション装置を提供する。
 本発明に係るシミュレーション装置は、互いに類似する第1関数と第2関数を含むプログラムのシミュレーションを実行するシミュレーション装置において、
 前記第1関数の命令列の開始アドレスである第1開始アドレスと、前記第1関数の命令列の終了アドレスである第1終了アドレスと、前記第2関数の命令列の開始アドレスである第2開始アドレスと、前記第2関数の命令列の終了アドレスである第2終了アドレスとを対応付けたアドレス情報を記憶するアドレス情報記憶部と、
 シミュレーションを実行する命令列のアドレスをオリジナルアドレスとして取得し、前記アドレス情報を用いて、前記オリジナルアドレスが前記第1開始アドレスと前記第1終了アドレスとの間にあるかを判定し、前記オリジナルアドレスが前記第1開始アドレスと前記第1終了アドレスとの間にある場合に、前記オリジナルアドレスを前記第2開始アドレスと前記第2終了アドレスとの間に再配置し、再配置されたアドレスを処理アドレスとするアドレス再配置部と、
 前記処理アドレスについてキャッシュシミュレーションを実行し、キャッシュヒットかキャッシュミスかを評価する評価部と
を備えた。
 本発明に係るシミュレーション装置は、互いに類似する第1関数と第2関数を含むプログラムのシミュレーションを実行する。アドレス情報記憶部は、第1関数の命令列の開始アドレスである第1開始アドレスと、第1関数の命令列の終了アドレスである第1終了アドレスと、第2関数の命令列の開始アドレスである第2開始アドレスと、第2関数の命令列の終了アドレスである第2終了アドレスとを対応付けたアドレス情報を記憶する。アドレス再配置部は、オリジナルアドレスが第1開始アドレスと第1終了アドレスとの間にある場合に、オリジナルアドレスを第2開始アドレスと前記第2終了アドレスとの間に処理アドレスとして再配置する。評価部は、処理アドレスについてキャッシュシミュレーションを実行し、キャッシュヒットかキャッシュミスかを評価する。よって、本発明に係るシミュレーション装置によれば、プログラムのリファクタリングを行う前に、重複コードを仮想的に共通化した際の性能を評価することができ、無駄なリファクタリングの発生を抑制することができる。
実施の形態1に係るシミュレーション装置100の構成図。 実施の形態1に係るアドレス情報421の構成図。 実施の形態1に係るシミュレーション方法610およびシミュレーションプログラム620のシミュレーション処理S100のフロー図。 実施の形態1に係るアドレス再配置処理S20のフロー図。 実施の形態1の変形例に係るシミュレーション装置100の構成図。
 実施の形態1.
***構成の説明***
 図1を用いて、本実施の形態に係るシミュレーション装置100の構成について説明する。本実施の形態に係るシミュレーション装置100は、互いに類似する第1関数10と第2関数20を含むプログラム200のシミュレーションを実行する。互いに類似する第1関数10と第2関数20とを重複コードともいう。シミュレーション装置100は、重複コードを仮想的に共通化した際の性能を評価することができる。
 重複コードとは、類似処理を行っている複数の関数を指す。本実施の形態では、第1関数10を、共通化する対象の関数である共通化関数101ともいう。また、第2関数20を、共通化する先の関数である共通化先関数201ともいう。
 仮想的に共通化した際の性能を評価するとは、共通化関数101を、共通化する先の1つの関数である共通化先関数201に共通化したと仮定して、キャッシュシミュレーションを行い、キャッシュヒットかキャッシュミスかの判定を行うことである。
 図1に示すように、シミュレーション装置100は、コンピュータである。
 シミュレーション装置100は、プロセッサ910、記憶装置920、入力インタフェース930、および出力インタフェース940といったハードウェアを備える。記憶装置920は、メモリ921と補助記憶装置922とを含む。
 シミュレーション装置100は、機能構成として、命令実行部110と、アドレス再配置部120と、評価部130と、記憶部140とを備える。記憶部140は、命令記憶部141と、アドレス情報記憶部142とを有する。アドレス情報記憶部142は、アドレス情報421を記憶する。
 命令実行部110と、アドレス再配置部120と、評価部130のそれぞれの機能は、ソフトウェアで実現される。
 記憶部140は、メモリ921により実現される。また、記憶部140は、補助記憶装置922のみ、あるいは、メモリ921および補助記憶装置922で実現されてもよい。記憶部140の実現方法は任意である。
 プロセッサ910は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。プロセッサ910は、演算処理を行うIC(Integrated Circuit)である。プロセッサ910の具体例は、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、GPU(Graphics Processing Unit)である。
 メモリ921は、データを一時的に記憶する記憶装置である。メモリ921の具体例は、SRAM(Static Random Access Memory)、DRAM(Dynamic Random Access Memory)である。
 補助記憶装置922は、データを保管する記憶装置である。補助記憶装置922の具体例は、HDD(Hard Disk Drive)である。また、補助記憶装置922は、SD(登録商標)(Secure Digital)メモリカード、CF(CompactFlash)、NANDフラッシュ、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ(登録商標)ディスク、DVD(Digital Versatile Disk)といった可搬記憶媒体であってもよい。
 入力インタフェース930は、マウス、キーボード、タッチパネルといった入力装置と接続されるポートである。入力インタフェース930は、具体的には、USB(Universal Serial Bus)端子である。なお、入力インタフェース930は、LAN(Local Area Network)と接続されるポートであってもよい。入力インタフェース930は、プログラム200を取得し、命令実行部110に渡す。
 出力インタフェース940は、ディスプレイといった表示機器のケーブルが接続されるポートである。出力インタフェース940は、具体的には、USB端子またはHDMI(登録商標)(High Definition Multimedia Interface)端子である。ディスプレイは、具体的には、LCD(Liquid Crystal Display)である。
 補助記憶装置922には、命令実行部110と、アドレス再配置部120と、評価部130のそれぞれの機能を実現するプログラムが記憶されている。命令実行部110と、アドレス再配置部120と、評価部130のそれぞれの機能を実現するプログラムをシミュレーションプログラム620ともいう。このプログラムは、メモリ921にロードされ、プロセッサ910に読み込まれ、プロセッサ910によって実行される。また、補助記憶装置922はOSを記憶している。補助記憶装置922にされているOSの少なくとも一部がメモリ921にロードされる。プロセッサ910はOSを実行しながら、シミュレーションプログラム620を実行する。
 シミュレーション装置100は、1つのプロセッサ910のみを備えていてもよいし、複数のプロセッサ910を備えていてもよい。複数のプロセッサ910が、命令実行部110と、アドレス再配置部120と、評価部130のそれぞれの機能を実現するプログラムを連携して実行してもよい。
 命令実行部110と、アドレス再配置部120と、評価部130のそれぞれの処理の結果を示す情報、データ、信号値、および変数値は、シミュレーション装置100の補助記憶装置922、メモリ921、または、プロセッサ910内のレジスタまたはキャッシュメモリに記憶される。
 命令実行部110と、アドレス再配置部120と、評価部130のそれぞれの機能を実現するプログラムは、可搬記録媒体に記憶されてもよい。可搬記録媒体とは、具体的には、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ(登録商標)ディスク、DVD(Digital Versatile Disc)である。
 なお、シミュレーションプログラムプロダクトとは、シミュレーションプログラム620が記録された記憶媒体および記憶装置である。シミュレーションプログラムプロダクトは、外観に関わらず、コンピュータ読み取り可能なプログラムをロードしているものを指す。
***機能の説明***
 命令実行部110は、シミュレーション対象マシンのプロセッサの命令コードを、シミュレーションを実行するマシン、すなわちシミュレーション装置100のプロセッサの命令コードに変換し、変換した命令コードを実行する。ここで、シミュレーション対象マシンをターゲットマシンともいう。また、シミュレーション対象マシンのプロセッサをターゲットCPUともいう。また、シミュレーションを実行するマシンをホストマシンともいう。シミュレーションを実行するマシンのプロセッサをホストCPUともいう。
 すなわち、命令実行部110は、ターゲットマシンのターゲットCPUの命令コードを、ホストマシンのホストCPUの命令コードに変換し、変換した命令コードを実行する。命令実行部110は、ISS(Instruction set simulator)命令実行部ともいう。
 命令記憶部141は、シミュレーションで用いるソフトウェアの情報を記憶する。命令記憶部141は、命令実行部110が次に実行する命令コードのアドレスである命令アドレスを命令実行部110から取得し、取得した命令アドレスに記録されている命令コードを命令実行部110に渡す。
 図2を用いて、本実施の形態に係るアドレス情報421の構成について説明する。
 アドレス情報記憶部142は、共通化関数101の命令列の開始アドレスである第1開始アドレスt_startと、共通化関数101の命令列の終了アドレスである第1終了アドレスt_endと、共通化先関数201の命令列の開始アドレスである第2開始アドレスtransと、共通化先関数201の命令列の終了アドレスである第2終了アドレスtrans_endとを対応付けたアドレス情報421を記憶する。
 アドレス情報421には、共通化関数101の第1開始アドレスt_startおよび第1終了アドレスt_endに対応して、共通化先関数201の第2開始アドレスtransおよび第2終了アドレスtrans_endが設定されている。アドレス情報421には、共通化関数101の個数分の行が設けられる。アドレス情報421は、アドレス再配置用テーブルともいう。
 アドレス再配置部120は、命令実行部110から命令アドレスをオリジナルアドレス111として取得し、オリジナルアドレス111を処理アドレス121に再配置する。アドレス再配置部120は、アドレス情報421を基づいて、オリジナルアドレス111を処理アドレス121に再配置し、処理アドレス121を評価部130に出力する。
 評価部130は、命令キャッシュの機能を模擬する。評価部130は、命令アドレスが入力されることで、その命令アドレスの命令コードが命令キャッシュ内に保存されているかどうかを判定する。入力された命令アドレスの命令コードが命令キャッシュ内に保存されることをキャッシュヒットと呼び、命令コードが命令キャッシュ内に保存されないことをキャッシュミスと呼ぶ。評価部130は、入力された命令アドレスについてキャッシュシミュレーションを行い、キャッシュヒットかキャッシュミスかを判定する。評価部130は、アドレス再配置部120から出力された処理アドレス121についてキャッシュシミュレーションを実行し、キャッシュヒットかキャッシュミスかを判定する。評価部130は、命令キャッシュモデルともいう。ここで、キャッシュシミュレーションを実行するとは、入力されたアドレスに対し、キャッシュのサイズ、ライン長、およびウェイ数を元に、対応するインデックスを計算し、計算したインデックスを元にキャッシュ内に対象のデータが存在するかを判定し、その判定結果を返す処理をいう。
***動作の説明***
 図3を用いて、本実施の形態に係るシミュレーション方法610およびシミュレーションプログラム620のシミュレーション処理S100について説明する。シミュレーション処理S100は、命令実行処理S10と、アドレス再配置処理S20と、キャッシュシミュレーション処理S30とを有する。
<命令実行処理S10>
 ステップS11において、命令実行部110は、次にシミュレーションを実行する命令のアドレスを命令アドレス11としてアドレス再配置部120に出力する。また、命令実行部110は、命令アドレス11を記憶部140の命令記憶部141に出力する。
 ステップS12において、命令記憶部141は、命令実行部110から命令アドレスを取得し、命令アドレスの指す命令コードを命令実行部110に渡す。
<アドレス再配置処理S20>
 ステップS13において、アドレス再配置部120は、命令実行部110から命令アドレス11をオリジナルアドレス111として取得する。アドレス再配置部120は、記憶部140のアドレス情報421を参照し、オリジナルアドレス111が指す命令コードが共通化関数101に含まれるか否かを判定する。
 オリジナルアドレス111が指す命令コードが共通化関数101に含まれる場合、アドレス再配置部120は、ステップS14に進む。オリジナルアドレス111が指す命令コードが共通化関数101に含まれない場合、アドレス再配置部120は、ステップS15に進む。
 ステップS14において、アドレス再配置部120は、オリジナルアドレス111を共通化先関数201の命令コードを指すアドレスに再配置し、処理アドレス121として出力する。
<キャッシュシミュレーション処理S30>
 ステップS15において、評価部130は、アドレス再配置部120から出力された処理アドレス121についてキャッシュシミュレーションを行い、キャッシュヒットかキャッシュミスかを判定する。
 図4を用いて、本実施の形態に係るアドレス再配置処理S20について詳しく説明する。
 アドレス再配置処理S20において、アドレス再配置部120は、シミュレーションを実行する命令列のアドレスをオリジナルアドレス111として取得し、アドレス情報421を用いて、オリジナルアドレス111が第1開始アドレスt_startと第1終了アドレスt_endとの間にあるかを判定する。アドレス再配置部120は、オリジナルアドレス111が第1開始アドレスt_startと第1終了アドレスt_endとの間にある場合に、オリジナルアドレス111を第2開始アドレスtransと第2終了アドレスtrans_endとの間に再配置し、再配置されたアドレスを処理アドレス121とする。
 ステップS21において、アドレス再配置部120は、オリジナルアドレス111が、共通化関数101のアドレスの範囲に含まれるか否かを判定する。具体的には、アドレス再配置部120は、アドレス情報421を用いて、オリジナルアドレス111が、共通化関数101の第1開始アドレスt_startであるv_start0から、共通化関数101の第1終了アドレスt_endであるv_end0の間のアドレスであるかを判定する。
 オリジナルアドレス111が共通化関数101のアドレスの範囲に含まれる場合、アドレス再配置部120はステップS22に進む。オリジナルアドレス111が共通化関数101のアドレスの範囲に含まれない場合、アドレス再配置部120は処理を終了する。
 ステップS22において、アドレス再配置部120は、オリジナルアドレス111が第1開始アドレスt_startと第1終了アドレスt_endとの間にある場合に、オリジナルアドレス111について第1開始アドレスt_startからのオフセット値offsetを算出する。具体的には、アドレス再配置部120は、第1開始アドレスt_startであるv_start0を基準として、v_start0からオリジナルアドレス111までの値をオフセット値offsetとして算出する。
 ステップS23において、アドレス再配置部120は、第2開始アドレスtransにオフセット値offsetを加算したアドレスを再配置アドレスaddr’として算出する。具体的には、アドレス再配置部120は、オフセット値offsetを第2開始アドレスtransであるstart0に加算し、再配置アドレスaddr’とする。アドレス再配置部120は、オフセット値offsetを共通化先関数201の第2開始アドレスtransに加算することで、関数を共通化した際にオリジナルアドレス111が変化すると想定されるアドレスへ、オリジナルアドレス111を再配置する。
 ステップS24において、アドレス再配置部120は、再配置アドレスaddr’が共通化先関数201のアドレスの範囲に含まれているかを判定する。具体的には、アドレス再配置部120は、再配置アドレスaddr’が共通化先関数201の第2終了アドレスtrans_endであるend0未満であるかを判定する。
 再配置アドレスaddr’が第2終了アドレスtrans_end未満の場合、ステップS26において、アドレス再配置部120は、再配置アドレスaddr’を処理アドレス121として出力し、処理を終了する。
 再配置したアドレスaddr’が第2終了アドレスtrans_end以上の場合、ステップS25において、アドレス再配置部120は、第2終了アドレスtrans_endを処理アドレス121とする。すなわち、アドレス再配置部120は、再配置アドレスaddr’を第2終了アドレスtrans_endであるend0にクリップ、すなわち変更する。
***他の構成***
 本実施の形態では、命令実行部110と、アドレス再配置部120と、評価部130の機能がソフトウェアで実現される。しかし、変形例として、命令実行部110と、アドレス再配置部120と、評価部130の機能がハードウェアで実現されてもよい。
 図5を用いて、本実施の形態の変形例に係るシミュレーション装置100の構成について説明する。
 図5に示すように、シミュレーション装置100は、処理回路909、入力インタフェース930、および出力インタフェース940といったハードウェアを備える。
 処理回路909は、上述した命令実行部110と、アドレス再配置部120と、評価部130の機能および記憶部140を実現する専用の電子回路である。処理回路909は、具体的には、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックIC、GA、ASIC、または、FPGAである。GAは、Gate Arrayの略語である。ASICは、Application Specific Integrated Circuitの略語である。FPGAは、Field-Programmable Gate Arrayの略語である。
 命令実行部110と、アドレス再配置部120と、評価部130の機能は、1つの処理回路909で実現されてもよいし、複数の処理回路909に分散して実現されてもよい。
 別の変形例として、命令実行部110と、アドレス再配置部120と、評価部130の機能がソフトウェアとハードウェアの組合せで実現されてもよい。すなわち、シミュレーション装置100の一部の機能が専用のハードウェアで実現され、残りの機能がソフトウェアで実現されてもよい。
 シミュレーション装置100のプロセッサ910、記憶装置920、および、処理回路909を、総称して「プロセッシングサーキットリ」という。つまり、シミュレーション装置100の構成が図1および図5のいずれに示した構成であっても、命令実行部110と、アドレス再配置部120と、評価部130の機能および記憶部140は、プロセッシングサーキットリにより実現される。
 「部」を「工程」または「手順」または「処理」に読み替えてもよい。また、「部」の機能をファームウェアで実現してもよい。
***本実施の形態の効果の説明***
 本実施の形態に係るシミュレーション装置100では、アドレス再配置部が、入力されたオリジナルアドレスが共通化関数を指す場合、オリジナルアドレスを共通化先関数のスタートアドレスとエンドアドレスとの間に再配置する。そして、評価部が、再配置したアドレスについてキャッシュシミュレーションを行い、キャッシュヒットかキャッシュミスかを判定する。よって、本実施の形態に係るシミュレーション装置100によれば、ソフトウェアのリファクタリングをする前に、重複コードを仮想的に共通化した際の性能を評価することができる。したがって、本実施の形態に係るシミュレーション装置100によれば、リファクタリングにかかった工数を無駄にすることを抑制できる。
 本実施の形態に係るシミュレーション装置100では、ソフトウェア内の重複コードを検出する静的解析ツールの処理結果に基づき、検出された重複コードを共通化した場合の性能情報を計測する。よって、本実施の形態に係るシミュレーション装置100によれば、より効率的に重複コードを仮想的に共通化した際の性能を評価することができる。
 実施の形態1では、シミュレーション装置100の各部が独立した機能ブロックとしてシミュレーション装置100を構成している。しかし、上述した実施の形態のような構成でなくてもよく、シミュレーション装置100の構成は任意である。シミュレーション装置100の機能ブロックは、上述した実施の形態で説明した機能を実現することができれば、任意である。これらの機能ブロックを、他のどのような組み合わせ、あるいは任意のブロック構成で、シミュレーション装置100を構成しても構わない。
 また、シミュレーション装置100は、1つの装置でなく、複数の装置から構成されたシステムでもよい。
 実施の形態1について説明したが、この実施の形態のうち、複数の部分を組み合わせて実施しても構わない。あるいは、この実施の形態のうち、1つの部分を実施しても構わない。その他、この実施の形態を、全体としてあるいは部分的に、どのように組み合わせて実施しても構わない。
 なお、上述した実施の形態は、本質的に好ましい例示であって、本発明の範囲、本発明の適用物の範囲、および本発明の用途の範囲を制限することを意図するものではない。上述した実施の形態は、必要に応じて種々の変更が可能である。
 10 第1関数、20 第2関数、100 シミュレーション装置、101 共通化関数、201 共通化先関数、110 命令実行部、120 アドレス再配置部、121 処理アドレス、130 評価部、140 記憶部、141 命令記憶部、142 アドレス情報記憶部、421 アドレス情報、11 命令アドレス、111 オリジナルアドレス、200 プログラム、610 シミュレーション方法、620 シミュレーションプログラム、909 処理回路、910 プロセッサ、920 記憶装置、921 メモリ、922 補助記憶装置、930 入力インタフェース、940 出力インタフェース、addr’ 再配置アドレス、offset オフセット値、t_start 第1開始アドレス、t_end 第1終了アドレス、trans 第2開始アドレス、trans_end 第2終了アドレス、S10 命令実行処理、S20 アドレス再配置処理、S30 評価処理、S100 シミュレーション処理。

Claims (6)

  1.  互いに類似する第1関数と第2関数を含むプログラムのシミュレーションを実行するシミュレーション装置において、
     前記第1関数の命令列の開始アドレスである第1開始アドレスと、前記第1関数の命令列の終了アドレスである第1終了アドレスと、前記第2関数の命令列の開始アドレスである第2開始アドレスと、前記第2関数の命令列の終了アドレスである第2終了アドレスとを対応付けたアドレス情報を記憶するアドレス情報記憶部と、
     シミュレーションを実行する命令列のアドレスをオリジナルアドレスとして取得し、前記アドレス情報を用いて、前記オリジナルアドレスが前記第1開始アドレスと前記第1終了アドレスとの間にあるかを判定し、前記オリジナルアドレスが前記第1開始アドレスと前記第1終了アドレスとの間にある場合に、前記オリジナルアドレスを前記第2開始アドレスと前記第2終了アドレスとの間に再配置し、再配置されたアドレスを処理アドレスとするアドレス再配置部と、
     前記処理アドレスについてキャッシュシミュレーションを実行し、キャッシュヒットかキャッシュミスかを評価する評価部と
    を備えたシミュレーション装置。
  2.  前記シミュレーション装置は、
     次にシミュレーションを実行する命令のアドレスを命令アドレスとして前記アドレス再配置部に出力する命令実行部を備え、
     前記アドレス再配置部は、
     前記命令アドレスを前記オリジナルアドレスとして取得する請求項1に記載のシミュレーション装置。
  3.  前記アドレス再配置部は、
     前記オリジナルアドレスが前記第1開始アドレスと前記第1終了アドレスとの間にある場合に、前記オリジナルアドレスについて前記第1開始アドレスからのオフセット値を算出し、前記第2開始アドレスに前記オフセット値を加算したアドレスを再配置アドレスとして算出し、前記再配置アドレスが前記第2終了アドレス未満の場合に、前記再配置アドレスを前記処理アドレスとする請求項1または2に記載のシミュレーション装置。
  4.  前記アドレス再配置部は、
     前記再配置アドレスが前記第2終了アドレス以上の場合に、前記第2終了アドレスを前記処理アドレスとする請求項3に記載のシミュレーション装置。
  5.  互いに類似する第1関数と第2関数を含むプログラムのシミュレーションを実行するシミュレーション装置のシミュレーション方法において、
     前記シミュレーション装置は、前記第1関数の命令列の開始アドレスである第1開始アドレスと、前記第1関数の命令列の終了アドレスである第1終了アドレスと、前記第2関数の命令列の開始アドレスである第2開始アドレスと、前記第2関数の命令列の終了アドレスである第2終了アドレスとを対応付けたアドレス情報を記憶するアドレス情報記憶部を有し、
     アドレス再配置部が、シミュレーションを実行する命令列のアドレスをオリジナルアドレスとして取得し、前記アドレス情報を用いて、前記オリジナルアドレスが前記第1開始アドレスと前記第1終了アドレスとの間にあるかを判定し、前記オリジナルアドレスが前記第1開始アドレスと前記第1終了アドレスとの間にある場合に、前記オリジナルアドレスを前記第2開始アドレスと前記第2終了アドレスとの間に再配置し、再配置されたアドレスを処理アドレスとし、
     評価部が、前記処理アドレスについてキャッシュシミュレーションを実行し、キャッシュヒットかキャッシュミスかを評価するシミュレーション方法。
  6.  互いに類似する第1関数と第2関数を含むプログラムのシミュレーションを実行するシミュレーション装置のシミュレーションプログラムにおいて、
     前記シミュレーション装置は、前記第1関数の命令列の開始アドレスである第1開始アドレスと、前記第1関数の命令列の終了アドレスである第1終了アドレスと、前記第2関数の命令列の開始アドレスである第2開始アドレスと、前記第2関数の命令列の終了アドレスである第2終了アドレスとを対応付けたアドレス情報を記憶するアドレス情報記憶部を有し、
     シミュレーションを実行する命令列のアドレスをオリジナルアドレスとして取得し、前記アドレス情報を用いて、前記オリジナルアドレスが前記第1開始アドレスと前記第1終了アドレスとの間にあるかを判定し、前記オリジナルアドレスが前記第1開始アドレスと前記第1終了アドレスとの間にある場合に、前記オリジナルアドレスを前記第2開始アドレスと前記第2終了アドレスとの間に再配置し、再配置されたアドレスを処理アドレスとするアドレス再配置処理と、
     前記処理アドレスについてキャッシュシミュレーションを実行し、キャッシュヒットかキャッシュミスかを評価する評価処理と
    をコンピュータである前記シミュレーション装置に実行させるシミュレーションプログラム。
PCT/JP2017/007943 2017-02-28 2017-02-28 シミュレーション装置、シミュレーション方法およびシミュレーションプログラム WO2018158846A1 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
DE112017006932.7T DE112017006932B4 (de) 2017-02-28 2017-02-28 Simulationseinrichtung, Simulationsverfahren und Simulationsprogramm
US16/475,308 US20190369997A1 (en) 2017-02-28 2017-02-28 Simulation device, simulation method, and computer readable medium
PCT/JP2017/007943 WO2018158846A1 (ja) 2017-02-28 2017-02-28 シミュレーション装置、シミュレーション方法およびシミュレーションプログラム
JP2019502337A JP6545417B2 (ja) 2017-02-28 2017-02-28 シミュレーション装置、シミュレーション方法およびシミュレーションプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2017/007943 WO2018158846A1 (ja) 2017-02-28 2017-02-28 シミュレーション装置、シミュレーション方法およびシミュレーションプログラム

Publications (1)

Publication Number Publication Date
WO2018158846A1 true WO2018158846A1 (ja) 2018-09-07

Family

ID=63371217

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2017/007943 WO2018158846A1 (ja) 2017-02-28 2017-02-28 シミュレーション装置、シミュレーション方法およびシミュレーションプログラム

Country Status (4)

Country Link
US (1) US20190369997A1 (ja)
JP (1) JP6545417B2 (ja)
DE (1) DE112017006932B4 (ja)
WO (1) WO2018158846A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6981087B2 (ja) * 2017-08-03 2021-12-15 富士通株式会社 情報処理装置、方法、及びプログラム
US11334349B2 (en) * 2019-09-19 2022-05-17 Dell Products L.P. Removing feature flag-related codebase from applications

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003316612A (ja) * 2002-04-25 2003-11-07 Fujitsu Ltd 縮小プログラム自動作成装置
JP2014142682A (ja) * 2013-01-22 2014-08-07 Mitsubishi Electric Corp メモリアドレス管理システム及びプログラム

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10124327A (ja) * 1996-10-16 1998-05-15 Nec Corp インストラクションキャッシュミス率削減方法
US6098148A (en) * 1997-05-29 2000-08-01 International Business Machines Corporation Storage and access of data using volume trailer
EP1676195A4 (en) * 2003-10-23 2007-08-29 Innopath Software Inc DYNAMIC ADDRESSING BY CENTRALIZED DYNAMIC ADDRESSING MANAGER
US7596681B2 (en) * 2006-03-24 2009-09-29 Cirrus Logic, Inc. Processor and processing method for reusing arbitrary sections of program code
JP2007293383A (ja) * 2006-04-20 2007-11-08 Toshiba Corp プログラム開発支援装置及びプログラム開発支援装置の動作方法
US10261793B2 (en) * 2011-12-16 2019-04-16 International Business Machines Corporation Instruction predication using instruction address pattern matching
JP6273733B2 (ja) * 2013-09-20 2018-02-07 富士通株式会社 演算処理装置、情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラム
EP2927763B1 (en) * 2014-04-04 2019-06-19 Abb Ag System and method for an optimized operation of real-time embedded solutions in industrial automation

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003316612A (ja) * 2002-04-25 2003-11-07 Fujitsu Ltd 縮小プログラム自動作成装置
JP2014142682A (ja) * 2013-01-22 2014-08-07 Mitsubishi Electric Corp メモリアドレス管理システム及びプログラム

Also Published As

Publication number Publication date
US20190369997A1 (en) 2019-12-05
JP6545417B2 (ja) 2019-07-17
JPWO2018158846A1 (ja) 2019-07-18
DE112017006932T5 (de) 2019-10-10
DE112017006932B4 (de) 2021-06-10

Similar Documents

Publication Publication Date Title
US10504605B2 (en) Method and system for testing firmware of solid-state storage device, and electronic apparatus
US9858057B2 (en) Methods and apparatus to validate translated guest code in a dynamic binary translator
US9436450B2 (en) Method and apparatus for optimising computer program code
RU2015151131A (ru) Загрузка парциальной ширины, зависящая от режима, в процессорах с регистрами с большим числом разрядов, способы и системы
KR20130098303A (ko) 정렬 제어
KR20200060245A (ko) 데이터 액세스 방법, 장치, 기기 및 저장 매체
TW202225976A (zh) 虛擬化寄存器裝置和存取該裝置的方法和電腦程式產品
WO2018158846A1 (ja) シミュレーション装置、シミュレーション方法およびシミュレーションプログラム
JPWO2019077738A1 (ja) データ検証装置、データ検証方法及びデータ検証プログラム
US10446238B2 (en) Pseudo single pass NAND memory programming
JP6234639B2 (ja) シミュレーション装置及びシミュレーション方法及びシミュレーションプログラム
US9552208B2 (en) System, method, and computer program product for remapping registers based on a change in execution mode
US10606759B2 (en) Firmware or hardware component assist for memory mapped I/O
CN111465923A (zh) 用于捕获和执行图形处理操作的技术
CN104951244A (zh) 用于存取数据的方法和设备
US11106478B2 (en) Simulation device, simulation method, and computer readable medium
CN114902336B (zh) 具有子字段最小和最大箝位的内容可寻址存储器
CN107851015B (zh) 向量操作数位大小控制
WO2018163291A1 (ja) アーキテクチャ選定装置、アーキテクチャ選定方法およびアーキテクチャ選定プログラム
US9753776B2 (en) Simultaneous multithreading resource sharing
US10748637B2 (en) System and method for testing processor errors
US9747104B2 (en) Utilizing pipeline registers as intermediate storage
JP7274069B2 (ja) トレース制御装置、エミュレータ、トレース制御方法、および、トレース制御プログラム
JP6234640B2 (ja) シミュレーション装置及びシミュレーション方法及びシミュレーションプログラム
JP2024072010A (ja) プログラム、命令実行制御装置、及び命令実行制御方法

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 17898829

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2019502337

Country of ref document: JP

Kind code of ref document: A

122 Ep: pct application non-entry in european phase

Ref document number: 17898829

Country of ref document: EP

Kind code of ref document: A1