[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

JP5849744B2 - Function allocation device, function allocation program, and function allocation method - Google Patents

Function allocation device, function allocation program, and function allocation method Download PDF

Info

Publication number
JP5849744B2
JP5849744B2 JP2012019838A JP2012019838A JP5849744B2 JP 5849744 B2 JP5849744 B2 JP 5849744B2 JP 2012019838 A JP2012019838 A JP 2012019838A JP 2012019838 A JP2012019838 A JP 2012019838A JP 5849744 B2 JP5849744 B2 JP 5849744B2
Authority
JP
Japan
Prior art keywords
storage medium
functions
function
execution
execution program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2012019838A
Other languages
Japanese (ja)
Other versions
JP2013161110A (en
Inventor
隆志 大沢
隆志 大沢
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ricoh Co Ltd
Original Assignee
Ricoh Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ricoh Co Ltd filed Critical Ricoh Co Ltd
Priority to JP2012019838A priority Critical patent/JP5849744B2/en
Publication of JP2013161110A publication Critical patent/JP2013161110A/en
Application granted granted Critical
Publication of JP5849744B2 publication Critical patent/JP5849744B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Devices For Executing Special Programs (AREA)

Description

本発明は、関数配置装置、関数配置プログラム、関数配置方法に関し、特に、関数配置装置における関数配置の最適化に関する。   The present invention relates to a function placement device, a function placement program, and a function placement method, and more particularly to optimization of function placement in a function placement device.

近年、CPU(Central Processing Unit)等のプロセッサの高速化が急速に進み、DRAM(Dynamic Random Access Memory)等の外部メモリのアクセス時間とプロセッサとの処理速度との差は拡大する一方である。このため、プログラムの実行速度は、プロセッサの処理速度の高速化にも関わらず必ずしも高速化することができないといった問題がある。そのため、一般に、多くのコンピュータには、高速に動作するプロセッサと、アクセス速度の遅いDRAM等の外部メモリの他に、これらの速度の差を埋めるために高速にアクセスできるバッファであるキャッシュメモリがプロセッサのコア内に組み込まれて設けられている。   In recent years, the speed of processors such as a CPU (Central Processing Unit) has been rapidly increased, and the difference between the access time of an external memory such as a DRAM (Dynamic Random Access Memory) and the processing speed is increasing. For this reason, there is a problem that the execution speed of the program cannot always be increased although the processing speed of the processor is increased. Therefore, in general, in many computers, in addition to a processor that operates at high speed and an external memory such as a DRAM having a low access speed, a cache memory that is a buffer that can be accessed at high speed in order to fill the difference between these speeds. It is installed in the core of the.

そして、このように構成されたコンピュータにおいて、アクセス速度の遅いDRAM等の外部メモリ上にロードされた関数の一部をそのキャッシュメモリ内にコピーすることにより、高速なプログラム実行を実現することが可能となる。これは一般に、プログラムを実行すると、一度アクセスされた外部メモリ上の関数は近いうちに再度アクセスされる可能性が高いため、一度アクセスされた関数をすぐに読み出すことができるようにアクセス速度の速いキャッシュメモリにコピーしておくことで効率的にプログラムを実行することができることによる。   In the computer configured as described above, it is possible to realize high-speed program execution by copying a part of a function loaded on an external memory such as a DRAM having a low access speed into the cache memory. It becomes. In general, when a program is executed, a function on the external memory once accessed is likely to be accessed again in the near future. Therefore, the access speed is high so that the function once accessed can be read immediately. This is because the program can be executed efficiently by copying it to the cache memory.

しかしながら、高速なキャッシュ用のメモリはコストがかかるため、そのサイズは外部メモリと比較して小さくせざるを得ない。従って、実行するプログラムのどの部分をキャッシュに格納するかがプログラムを高速に実行する上できわめて重要となる。そこで、プログラムの実行速度を向上させるための技術として、プログラムの実行をプロファイリングし、実行頻度の高い関数同士がキャッシュコンフリクトを起こさないように、関数のアドレス配置をずらすようにプログラムをコンパイルし直し、キャッシュヒット率を向上させる技術が考案され、既に知られている(例えば、特許文献1)。   However, since a high-speed cache memory is expensive, its size must be smaller than that of an external memory. Therefore, which part of the program to be executed is stored in the cache is extremely important for executing the program at high speed. Therefore, as a technique to improve the execution speed of the program, profile the execution of the program, recompile the program so that the function address allocation is shifted so that functions with high execution frequency do not cause cache conflicts, A technique for improving the cache hit rate has been devised and already known (for example, Patent Document 1).

特許文献1に開示された技術によれば、実行頻度の高い関数同士が同じキャッシュライン上に配置されることを防ぐことができるので、キャッシュコンフリクトの発生を防止し、プログラムの実行速度を向上させることができる。   According to the technique disclosed in Patent Document 1, it is possible to prevent functions with high execution frequency from being placed on the same cache line, thereby preventing the occurrence of cache conflict and improving the execution speed of a program. be able to.

しかしながら、特許文献1に記載されている技術は、キャッシュメモリが組み込まれたプロセッサに関する技術であるため、例えば、安価なローエンドのマイクロコンピュータ(以下、「マイコン」とする)等のようにキャッシュメモリを備えていないプロセッサにおいては、特許文献1に記載されたような技術を適用することはできない。そこで、このようなキャッシュメモリを備えていないマイコン等においては、キャッシュメモリの代わりに、DRAMよりも高速にアクセスすることができるSRAM(Static Random Access Memory)によって構成されたメモリを備えたものがある。このようなマイコンにおいては、外部メモリとしてアクセス速度の遅いDRAMとアクセス速度の速いSRAMとを備え、その両方に関数が分配されて配置される。   However, since the technique described in Patent Document 1 is a technique related to a processor in which a cache memory is incorporated, for example, a cache memory such as an inexpensive low-end microcomputer (hereinafter referred to as “microcomputer”) is used. In a processor that is not provided, the technique described in Patent Document 1 cannot be applied. Therefore, some microcomputers or the like that do not include a cache memory include a memory that is configured by an SRAM (Static Random Access Memory) that can be accessed at a higher speed than a DRAM instead of the cache memory. . In such a microcomputer, a DRAM having a low access speed and an SRAM having a high access speed are provided as external memories, and functions are distributed and arranged in both of them.

このように、キャッシュメモリを備えず、外部メモリとしてアクセス速度の速いSRAMとアクセス速度の遅いDRAMの両方を備えるプロセッサにおいて、プログラムの実行速度を向上させるためには、実行回数の多い関数や実行時間の長い関数をアクセス速度の速いSRAMのメモリに配置することが望ましい。しかしながら、現状では、ユーザが手作業で関数配置を決定する必要があり効率よく行えないという問題がある。   As described above, in a processor that does not include a cache memory and includes both an SRAM having a high access speed and a DRAM having a low access speed as an external memory, in order to improve the execution speed of the program, It is desirable to place a long function in an SRAM memory having a high access speed. However, at present, there is a problem that it is not possible to efficiently perform the function arrangement because the user needs to manually determine the function arrangement.

尚、このような問題は、DRAM及びSRAMによって構成されるメモリに限るものではなく、機能とコストとの兼ね合いから、アクセス速度の速いメモリとアクセス速度の遅いメモリとで外部メモリを構成するような場合に、同様に問題となり得る。   Such a problem is not limited to the memory constituted by the DRAM and the SRAM, and an external memory is constituted by a memory having a high access speed and a memory having a low access speed in view of the balance between the function and the cost. In some cases, it can be problematic as well.

本発明は、このような課題を解決するためになされたものであり、プロセッサからの読み込み速度が異なる複数種類のメモリを搭載したシステムにおいてプログラムを実行する場合に、ユーザに手間をかけることなくプログラムの実行速度を向上させることを目的とする。   The present invention has been made to solve such a problem, and when executing a program in a system equipped with a plurality of types of memories having different reading speeds from the processor, the program is not time-consuming for the user. The purpose is to improve the execution speed.

上記課題を解決するために、第一の記憶媒体及び前記第一の記憶媒体よりもプロセッサからの読み込み速度が遅い第二の記憶媒体の何れかに複数の関数が夫々読み出されて実行される実行プログラムにおける、前記複数の関数の配置順を決定する関数配置装置であって、前記複数の関数を記述するソースコードに基づいて前記実行プログラムを生成する実行プログラム生成部と、生成された前記実行プログラムに含まれる前記複数の関数夫々のデータサイズを算出するデータサイズ算出部と、生成された前記実行プログラムに含まれる前記複数の関数夫々の実行時間を算出する実行時間算出部とを含み、前記実行プログラム生成部は、前記データサイズ、前記実行時間、前記第一の記憶媒体の記憶容量、前記第一の記憶媒体及び前記第二の記憶媒体夫々の読み込み速度に基づいて前記複数の関数の前記実行プログラム内における配置順を決定することにより、前記実行プログラムが実行される際の、前記複数の関数夫々の前記第一の記憶媒体及び前記第二の記憶媒体への読み出し状態を決定することを特徴とする。   In order to solve the above-described problem, a plurality of functions are read out and executed on either the first storage medium or the second storage medium whose reading speed from the processor is slower than that of the first storage medium. A function arrangement apparatus for determining an arrangement order of the plurality of functions in an execution program, the execution program generation unit generating the execution program based on a source code describing the plurality of functions, and the generated execution A data size calculation unit that calculates a data size of each of the plurality of functions included in the program, and an execution time calculation unit that calculates an execution time of each of the plurality of functions included in the generated execution program, The execution program generation unit includes the data size, the execution time, the storage capacity of the first storage medium, the first storage medium, and the second storage medium. By determining the arrangement order of the plurality of functions in the execution program based on the reading speed of each medium, the first storage medium of the plurality of functions when the execution program is executed, and the It is characterized in that the read state to the second storage medium is determined.

また、本発明の他の態様は、第一の記憶媒体及び前記第一の記憶媒体よりもプロセッサからの読み込み速度が遅い第二の記憶媒体の何れかに複数の関数が夫々読み出されて実行される実行プログラムにおける、前記複数の関数の配置順を決定する関数配置プログラムであって、前記複数の関数を記述するソースコードに基づいて前記実行プログラムを生成するステップと、生成された前記実行プログラムに含まれる前記複数の関数夫々のデータサイズを算出するステップと、生成された前記実行プログラムに含まれる前記複数の関数夫々の実行時間を算出するステップと、前記データサイズ、前記実行時間、前記第一の記憶媒体の記憶容量、前記第一の記憶媒体及び前記第二の記憶媒体夫々の読み込み速度に基づいて前記複数の関数の前記実行プログラム内における配置順を決定することにより、前記実行プログラムが実行される際の、前記複数の関数夫々の前記第一の記憶媒体及び前記第二の記憶媒体への読み出し状態を決定するステップと、を実行させることを特徴とする。 According to another aspect of the present invention, a plurality of functions are respectively read out and executed on either the first storage medium or the second storage medium whose reading speed from the processor is slower than that of the first storage medium. A function arrangement program for determining an arrangement order of the plurality of functions in an executed program, the step of generating the execution program based on a source code describing the plurality of functions, and the generated execution program Calculating the data size of each of the plurality of functions included in the program, calculating the execution time of each of the plurality of functions included in the generated execution program, the data size, the execution time, the first The realization of the plurality of functions based on the storage capacity of one storage medium, the reading speed of each of the first storage medium and the second storage medium Determining a read state of each of the plurality of functions to the first storage medium and the second storage medium when the execution program is executed by determining an arrangement order in the program; allowed to run, it characterized in Rukoto.

また、本発明の更に他の態様は、第一の記憶媒体及び前記第一の記憶媒体よりもプロセッサからの読み込み速度が遅い第二の記憶媒体の何れかに複数の関数が夫々読み出されて実行される実行プログラムにおける、前記複数の関数の配置順を決定する関数配置方法であって、前記複数の関数を記述するソースコードに基づいて前記実行プログラムを生成し、生成された前記実行プログラムに含まれる前記複数の関数夫々のデータサイズを算出し、生成された前記実行プログラムに含まれる前記複数の関数夫々の実行時間を算出し、前記データサイズ、前記実行時間、前記第一の記憶媒体の記憶容量、前記第一の記憶媒体及び前記第二の記憶媒体夫々の読み込み速度に基づいて前記複数の関数の前記実行プログラム内における配置順を決定することにより、前記実行プログラムが実行される際の、前記複数の関数夫々の前記第一の記憶媒体及び前記第二の記憶媒体への読み出し状態を決定することを特徴とする。   According to still another aspect of the present invention, a plurality of functions are respectively read out to either the first storage medium or the second storage medium having a slower reading speed from the processor than the first storage medium. A function arrangement method for determining an arrangement order of the plurality of functions in an execution program to be executed, wherein the execution program is generated based on a source code describing the plurality of functions, and the generated execution program The data size of each of the plurality of functions included is calculated, the execution time of each of the plurality of functions included in the generated execution program is calculated, the data size, the execution time, and the first storage medium The arrangement order of the plurality of functions in the execution program is determined based on the storage capacity, the reading speed of each of the first storage medium and the second storage medium. And by, and determines the read state of the during the execution program is executed, to the plurality of functions each of said first storage medium and said second storage medium.

本発明によれば、プロセッサからの読み込み速度が異なる複数種類のメモリを搭載したシステムにおいてプログラムを実行する場合に、ユーザに手間をかけることなくプログラムの実行速度を向上させることができる。   According to the present invention, when a program is executed in a system equipped with a plurality of types of memories having different reading speeds from the processor, the execution speed of the program can be improved without taking time and effort for the user.

本発明の実施形態に係る関数配置装置のハードウェア構成を模式的に示すブロック図である。It is a block diagram which shows typically the hardware constitutions of the function arrangement | positioning apparatus which concerns on embodiment of this invention. 本発明の実施形態に係る関数配置装置が各関数をSRAMかDRAMの何れかに配置する際に参照するRAM情報の一例を示す図である。It is a figure which shows an example of RAM information referred when the function arrangement | positioning apparatus which concerns on embodiment of this invention arrange | positions each function in either SRAM or DRAM. 本発明の実施形態に係る関数配置装置が生成する関数情報の一例を示す図である。It is a figure which shows an example of the function information which the function arrangement | positioning apparatus which concerns on embodiment of this invention produces | generates. 本発明の実施形態に係る関数配置装置が関数配置を最適化して実行プログラムを生成する際の処理について説明するためのフローチャートである。It is a flowchart for demonstrating the process at the time of the function arrangement | positioning apparatus which concerns on embodiment of this invention optimizes function arrangement | positioning, and produces | generates an execution program. 本発明の実施形態に係る関数配置装置が関数の総実行時間の合計が最小になるように関数配置を最適化する際の処理を説明するためのフローチャートである。It is a flowchart for demonstrating the process at the time of the function arrangement | positioning apparatus which concerns on embodiment of this invention optimizing a function arrangement | positioning so that the sum total of the total execution time of a function may become the minimum. 本発明の実施形態に係る関数配置装置が関数配置を最適化した結果を示す図である。It is a figure which shows the result of the function arrangement | positioning apparatus which concerns on embodiment of this invention optimizing function arrangement | positioning.

以下、図面を参照して、本発明の実施形態を詳細に説明する。本実施形態においては、プロセッサからの読み込み速度の速いSRAM(Static Random Access Memory)と読み込み速度の遅いDRAM(Dynamic Random Access Memory)とを備えるマイクロコンピュータ(以下、「マイコン」とする)等のシステムにおいてCPU(Central Processing Unit)等のプロセッサによって実行プログラムを実行する場合に、その実行プログラムに含まれる関数の配置を自動的に決定する関数配置装置を例として説明する。即ち、本実施形態において、SRAMは第一の記憶媒体として機能し、DRAMは第二の記憶媒体として機能する。   Hereinafter, embodiments of the present invention will be described in detail with reference to the drawings. In the present embodiment, in a system such as a microcomputer (hereinafter referred to as “microcomputer”) including an SRAM (Static Random Access Memory) having a high reading speed from a processor and a DRAM (Dynamic Random Access Memory) having a low reading speed. A description will be given of a function placement apparatus that automatically determines the placement of functions included in an execution program when the execution program is executed by a processor such as a CPU (Central Processing Unit). That is, in this embodiment, the SRAM functions as a first storage medium, and the DRAM functions as a second storage medium.

このような関数配置装置において、本実施形態に係る要旨の一つは、プロセッサからの読み込み速度の速いSRAMと読み込み速度の遅いDRAMとを備えるシステムにおいてプロセッサによって実行プログラムを実行する場合に、実行時間の長い関数を読み込み速度の速いSRAMにデータ許容量の最大限度で自動的に配置することにある。   In such a function arrangement device, one of the gist according to the present embodiment is that when the execution program is executed by the processor in a system including an SRAM having a high reading speed from the processor and a DRAM having a low reading speed, the execution time The long function is automatically arranged in the SRAM having a high reading speed with the maximum allowable data amount.

従って、本実施形態に係る関数配置装置によれば、プログラムの実行時間を最短にするように最適な関数配置を自動的に決定することができるので、ユーザに手間をかけることなくプログラムの実行速度を向上させることができる。以下、詳細に説明する。   Therefore, according to the function arrangement device according to the present embodiment, the optimum function arrangement can be automatically determined so as to minimize the execution time of the program, so that the execution speed of the program without taking time and effort for the user. Can be improved. Details will be described below.

図1は、本実施形態に係る関数配置装置1の機能構成を模式的に示すブロック図である。図1に示すように、本実施形態に係る関数配置装置1は、コンパイラ11、リンカ12、プログラム実行部13、プロファイラ14を有する。コンパイラ11は、ソースコード2をコンパイルしてオブジェクトファイル3を生成する。生成されたオブジェクトファイル3には、本実施形態に係る関数配置装置1により配置されるべき関数が含まれる。   FIG. 1 is a block diagram schematically showing a functional configuration of the function arrangement device 1 according to the present embodiment. As shown in FIG. 1, the function placement device 1 according to this embodiment includes a compiler 11, a linker 12, a program execution unit 13, and a profiler 14. The compiler 11 compiles the source code 2 and generates an object file 3. The generated object file 3 includes a function to be placed by the function placement apparatus 1 according to the present embodiment.

リンカ12は、コンパイラ11で生成されたオブジェクトファイル3をリンクして各関数をSRAM又はDRAMの何れかに配置することにより実行プログラム4を生成する。即ち、ここでは、コンパイラ11及びリンカ12は、実行プログラム生成部として機能する。また、リンカ12は、コンパイラ11で生成されたオブジェクトファイル3をリンクする際に、各関数のデータサイズを算出する。即ち、ここでは、リンカ12は、データサイズ算出部として機能する。尚、各関数のデータサイズは、リンカ12の他、専用のツールによって算出されるようにしても良い。そして、リンカ12は、算出した関数のデータサイズ、後述するRAM情報、プロファイラ14が生成したプロファイル情報5に基づいて、各関数をSRAMかDRAMの何れかに配置するかを決定する。   The linker 12 generates the execution program 4 by linking the object file 3 generated by the compiler 11 and placing each function in either SRAM or DRAM. That is, here, the compiler 11 and the linker 12 function as an execution program generation unit. The linker 12 calculates the data size of each function when linking the object file 3 generated by the compiler 11. That is, here, the linker 12 functions as a data size calculation unit. The data size of each function may be calculated by a dedicated tool in addition to the linker 12. The linker 12 determines whether to arrange each function in either SRAM or DRAM based on the data size of the calculated function, RAM information described later, and profile information 5 generated by the profiler 14.

プログラム実行部13は、リンカ12で生成された実行プログラム4を実行する。プロファイラ14は、プログラム実行部13によるプログラム実行時の関数呼び出しをプロファイリングしてプロファイル情報5を生成する。ここで、プロファイル情報5には、各関数をDRAMに配置した場合の関数毎の総実行時間が含まれる。尚、プロファイラ14により生成されたプロファイル情報5は、図示しない記録媒体に記録されてリンカ12によるオブジェクトファイル3のリンクの際に参照される。   The program execution unit 13 executes the execution program 4 generated by the linker 12. The profiler 14 generates profile information 5 by profiling a function call during program execution by the program execution unit 13. Here, the profile information 5 includes the total execution time for each function when the functions are arranged in the DRAM. Note that the profile information 5 generated by the profiler 14 is recorded on a recording medium (not shown) and is referred to when the object file 3 is linked by the linker 12.

尚、プロファイラ14は、実行プログラム中の命令コードを1命令ずつ解釈しながら関数実行時間等を監視するソフトウェアであり、例えば、DBA(Dynamic Binary Analysis)ツール等のソフトウェアが知られている。以下では、リンカ12により算出された関数のデータサイズと、プロファイル情報5に含まれる総実行時間とをまとめて関数情報とする。   The profiler 14 is software that monitors the function execution time while interpreting the instruction code in the execution program one instruction at a time. For example, software such as a DBA (Dynamic Binary Analysis) tool is known. Below, the data size of the function calculated by the linker 12 and the total execution time included in the profile information 5 are collectively referred to as function information.

次に、本実施形態に係る関数配置装置1が各関数をSRAMかDRAMの何れかに配置する際に参照するRAM情報について図2を参照して説明する。図2は、本実施形態に係る関数配置装置1が各関数をSRAMかDRAMの何れかに配置する際に参照するRAM情報の一例を示す図である。図2に示すように、本実施形態に係る関数配置装置1が各関数をSRAMかDRAMの何れかに配置する際に参照するRAM情報は、メモリデバイス毎に、開始アドレス及び終端アドレス、読み込み速度、メモリサイズが対応付けられてテーブルとして関数配置装置1に管理されている。   Next, RAM information to be referred to when the function placement apparatus 1 according to the present embodiment places each function in either SRAM or DRAM will be described with reference to FIG. FIG. 2 is a diagram showing an example of RAM information referred to when the function placement apparatus 1 according to the present embodiment places each function in either SRAM or DRAM. As shown in FIG. 2, the RAM information referred to when the function placement apparatus 1 according to the present embodiment places each function in either SRAM or DRAM includes the start address, end address, and reading speed for each memory device. The memory size is associated and managed as a table by the function placement device 1.

「開始アドレス」及び「終端アドレス」は、関数を配置することが可能なアドレス領域を示している。「読み込み速度」は、プロセッサがメモリデバイスからデータを読み出す際の速度であり、図2に示す例では、4バイト当たりのデータを読み出す際の所要時間を示している。「メモリサイズ」は、各メモリデバイスの関数配置用に割り当てられた領域のデータサイズを示している。   The “start address” and “end address” indicate address areas where functions can be placed. “Reading speed” is the speed at which the processor reads data from the memory device. In the example shown in FIG. 2, the time required for reading data per 4 bytes is shown. “Memory size” indicates the data size of an area allocated for function arrangement of each memory device.

次に、本実施形態に係る関数配置装置1が生成する関数情報について図3を参照して説明する。図3は、本実施形態に係る関数配置装置1が生成する関数情報の一例を示す図である。図3に示すように、本実施形態に係る関数配置装置1が生成する関数情報は、関数名毎に、関数のデータサイズと総実行時間とが対応付けられてテーブルとして関数配置装置1に管理されている。   Next, function information generated by the function placement apparatus 1 according to the present embodiment will be described with reference to FIG. FIG. 3 is a diagram illustrating an example of function information generated by the function placement apparatus 1 according to the present embodiment. As shown in FIG. 3, the function information generated by the function placement device 1 according to the present embodiment is managed in the function placement device 1 as a table in which the function data size and the total execution time are associated with each function name. Has been.

また、総実行時間には、「SRAMに配置された場合の総実行時間」と「DRAMに配置された場合の総実行時間」とがあり、「DRAMに配置された場合の総実行時間」は、プロファイラ14が生成するプロファイル情報5に含まれる情報であって、上述したように、各関数をDRAMに配置した場合の関数毎の総実行時間である。また、「SRAMに配置された場合の総実行時間」は、図2に示したSRAMとDRAMとの読み込み速度の比により「DRAMに配置された場合の総実行時間」から算出される値である。従って、本実施形態においては、「SRAMに配置された場合の総実行時間」は、「DRAMに配置された場合の総実行時間」の半分となる。即ち、ここでは、プロファイラ14は、実行時間算出部として機能し、「SRAMに配置された場合の総実行時間」は、第一の実行時間を表し、「DRAMに配置された場合の総実行時間」は、第二の実行時間を表す。   The total execution time includes “total execution time when arranged in SRAM” and “total execution time when arranged in DRAM”, and “total execution time when arranged in DRAM” is The information included in the profile information 5 generated by the profiler 14 is the total execution time for each function when the functions are arranged in the DRAM as described above. The “total execution time when arranged in the SRAM” is a value calculated from the “total execution time when arranged in the DRAM” by the ratio of the reading speed between the SRAM and the DRAM shown in FIG. . Therefore, in the present embodiment, “total execution time when arranged in SRAM” is half of “total execution time when arranged in DRAM”. That is, here, the profiler 14 functions as an execution time calculation unit, and “total execution time when arranged in SRAM” represents the first execution time, and “total execution time when arranged in DRAM”. "Represents the second execution time.

次に、本実施形態に係る関数配置装置1が関数配置を最適化して実行プログラムを生成する際の処理について図4を参照して説明する。図4は、本実施形態に係る関数配置装置1が関数配置を最適化して実行プログラムを生成する際の処理について説明するためのフローチャートである。図4に示すように、本実施形態に係る関数配置装置1が関数配置を最適化して実行プログラムを生成する際にはまず、コンパイラ11がソースコード2を受け取ってコンパイルを行い、オブジェクトファイル3を生成し(S401)、生成したオブジェクトファイル3を関数配置装置1に備えられている記録媒体や外部記録媒体に記録する。即ち、ここでは、関数配置装置1に備えられている記録媒体や外部記録媒体は、関数記憶部として機能する。   Next, processing when the function placement apparatus 1 according to the present embodiment optimizes function placement and generates an execution program will be described with reference to FIG. FIG. 4 is a flowchart for explaining processing when the function placement apparatus 1 according to the present embodiment optimizes function placement and generates an execution program. As shown in FIG. 4, when the function placement apparatus 1 according to the present embodiment optimizes the function placement and generates an execution program, first, the compiler 11 receives the source code 2 and compiles the object file 3. Generate (S401), and record the generated object file 3 on a recording medium or an external recording medium provided in the function placement apparatus 1. That is, here, the recording medium and the external recording medium provided in the function arrangement device 1 function as a function storage unit.

そして、リンカ12がS401で生成されたオブジェクトファイル3をリンクすることにより各関数のデータサイズを算出し(S402)、後述するRAM情報を参照して生成した関数をメモリに配置することにより実行プログラム4を生成する(S403)。このとき、生成された関数はすべてDRAMに配置される。実行プログラム4が生成されると、プログラム実行部13が生成された実行プログラム4を実行すると同時に、プロファイラ14はプログラム実行部13によるプログラム実行時の関数呼び出しをプロファイリングしてプロファイル情報5を生成する(S404)。尚、ここで生成されたプロファイル情報5は、関数配置装置1に備えられている記録媒体や外部記録媒体に記録される。   Then, the linker 12 calculates the data size of each function by linking the object file 3 generated in S401 (S402), and places the function generated by referring to RAM information described later in the memory to execute the program. 4 is generated (S403). At this time, all the generated functions are arranged in the DRAM. When the execution program 4 is generated, the program execution unit 13 executes the generated execution program 4 and at the same time, the profiler 14 profiles the function call at the time of program execution by the program execution unit 13 to generate the profile information 5 ( S404). The profile information 5 generated here is recorded on a recording medium provided in the function arrangement device 1 or an external recording medium.

次に、リンカ12は、S401で生成されたオブジェクトファイル3を再度リンクすることにより、S402で算出されたデータサイズ、S404で生成されたプロファイル情報5、図2において説明したRAM情報に基づいて、関数配置を最適化して実行プログラム4を生成し(S405)、本実施形態に係る関数配置装置1は、関数配置を最適化して実行プログラムを生成する際の処理を終了する。   Next, the linker 12 relinks the object file 3 generated in S401, so that the data size calculated in S402, the profile information 5 generated in S404, and the RAM information described in FIG. The function arrangement is optimized to generate the execution program 4 (S405), and the function arrangement apparatus 1 according to the present embodiment ends the process when the function arrangement is optimized and the execution program is generated.

尚、S405の処理において、リンカ12は、プログラム実行部13により実行プログラム4を実行した際の関数の総実行時間が最小になるように、生成した複数の関数をSRAMとDRAMとに配置する。また、S405の処理において、S401で生成されたオブジェクトファイル3が関数配置装置1から読み出し可能な状態になければ、コンパイラ11が再度ソースコード2を受け取ってコンパイルし、オブジェクトファイル3を再び生成するようにしても良い。   In the process of S405, the linker 12 arranges the generated functions in the SRAM and the DRAM so that the total execution time of the functions when the execution program 4 is executed by the program execution unit 13 is minimized. In the process of S405, if the object file 3 generated in S401 is not readable from the function placement device 1, the compiler 11 receives the source code 2 again, compiles it, and generates the object file 3 again. Anyway.

次に、本実施形態に係る関数配置装置1が関数の総実行時間の合計が最小になるように関数配置を最適化する際の処理、つまり、図4におけるS405の処理の詳細について図5を参照して説明する。図5は、本実施形態に係る関数配置装置1が関数の総実行時間の合計が最小になるように関数配置を最適化する際の処理を説明するためのフローチャートである。   Next, FIG. 5 shows details of the processing when the function placement device 1 according to the present embodiment optimizes the function placement so that the total execution time of the functions is minimized, that is, the details of the processing of S405 in FIG. The description will be given with reference. FIG. 5 is a flowchart for explaining processing when the function placement apparatus 1 according to the present embodiment optimizes function placement so that the total total execution time of functions is minimized.

図5に示すように、本実施形態に係る関数配置装置1が関数の総実行時間の合計が最小になるように関数配置を最適化する際にはまず、リンカ12は、データサイズの合計がSRAM上の関数配置用に割り当てられた領域のサイズに収まるように、生成した複数の関数から任意に選択する(S501)。尚、ここでは、SRAM上の関数配置用に割り当てられた領域のサイズと、選択された関数のデータサイズの合計との差が、選択されなかった他のどの関数のデータサイズよりも大きくならないように選択される。   As shown in FIG. 5, when the function placement apparatus 1 according to the present embodiment optimizes function placement so that the total total execution time of functions is minimized, the linker 12 first determines that the total data size is Any one of the generated functions is arbitrarily selected so as to fit in the size of the area allocated for function arrangement on the SRAM (S501). In this case, the difference between the size of the area allocated for function arrangement on the SRAM and the sum of the data sizes of the selected functions should not be larger than the data size of any other functions not selected. Selected.

リンカ12は、S501で選択した関数について、図3を参照してSRAMに配置された場合の総実行時間の合計T1を算出し、また、S501で選択しなかった関数について、図3を参照してDRAMに配置された場合の総実行時間の合計T2を算出し、T1とT2の総和を関数の総実行時間の合計Tとして算出する(S502)。即ち、S502では、マイコンにおけるプロセッサによる実行プログラム4の実行時間が算出される。   The linker 12 calculates the total execution time T1 when the functions selected in S501 are arranged in the SRAM with reference to FIG. 3, and refers to FIG. 3 for the functions not selected in S501. The total T2 of the total execution time when arranged in the DRAM is calculated, and the sum of T1 and T2 is calculated as the total T of the total execution time of the function (S502). That is, in S502, the execution time of the execution program 4 by the processor in the microcomputer is calculated.

リンカ12は、取り得る全組み合わせについて(S503/NO、S504)、S501及びS502の処理と同様にして関数を選択して、関数の総実行時間の合計Tを算出する。リンカ12は、全組み合わせについて関数の総実行時間の合計Tを算出し終えたら(S503/YES)、関数の総実行時間の合計Tが最小となったときの組み合わせを最適な関数配置とする(S505)。そして、リンカ12は、その配置に従って関数をSRAMとDRAMとに配置して実行プログラムを生成し(S506)、本実施形態に係る関数配置装置1が関数の総実行時間の合計が最小になるように関数配置を最適化する際の処理を終了する。   For all possible combinations (S503 / NO, S504), the linker 12 selects a function in the same manner as the processing of S501 and S502, and calculates the total T of the total execution time of the function. When the linker 12 has finished calculating the total T of the total execution time of the functions for all the combinations (S503 / YES), the linker 12 sets the combination when the total T of the total execution times of the functions becomes the minimum as the optimal function arrangement ( S505). Then, the linker 12 generates an execution program by allocating functions to the SRAM and DRAM according to the allocation (S506), so that the function allocation apparatus 1 according to the present embodiment minimizes the total execution time of the functions. The processing for optimizing the function arrangement is finished.

このようにして関数配置の最適化を行った結果、図6に示すように、本実施形態においては、DRAMには、「FuncB」が配置され、SRAMには、「FuncA」、「FuncC」、「FuncD」、「FuncE」が配置され、そのときの関数の総実行時間Tの合計は、「23010(ms)」となる。   As a result of optimizing the function arrangement in this way, as shown in FIG. 6, in this embodiment, “FuncB” is arranged in the DRAM, and “FuncA”, “FuncC”, “FuncD” and “FuncE” are arranged, and the total of the total execution time T of the function at that time is “23010 (ms)”.

以上、説明したように、本実施形態に係る関数配置装置1は、プロセッサからの読み込み速度の速いSRAMと読み込み速度の遅いDRAMとを備えるシステムにおいてプロセッサによりプログラムを実行する場合に、実行時間の長い関数を読み込み速度の速いSRAMにデータ許容量の最大限度で自動的に配置することができる。   As described above, the function placement apparatus 1 according to the present embodiment has a long execution time when a program is executed by a processor in a system including an SRAM having a high reading speed from the processor and a DRAM having a low reading speed. The function can be automatically arranged in the SRAM having a high reading speed at the maximum limit of the data allowance.

従って、本実施形態に係る関数配置装置1によれば、プログラムの実行時間を最短にするように最適な関数配置を自動的に決定することができるので、ユーザに手間をかけることなくプログラムの実行速度を向上させることができる。   Therefore, according to the function arrangement device 1 according to the present embodiment, the optimum function arrangement can be automatically determined so as to minimize the execution time of the program. Speed can be improved.

尚、本実施形態においては、DRAM及びSRAMによって構成されるマイコンについて説明したが、DRAM及びSRAMによって構成されるマイコンに限られるものではなく、プロセッサからの読み込み速度の速いメモリと読み込み速度の遅いメモリとで外部メモリを構成するようなマイコンであっても良い。   In the present embodiment, the microcomputer constituted by the DRAM and the SRAM has been described. However, the present invention is not limited to the microcomputer constituted by the DRAM and the SRAM, and a memory having a high reading speed from the processor and a memory having a low reading speed. The microcomputer may constitute an external memory.

また、本実施形態においては、DRAMとSRAMの2種類のメモリを備えるマイコンについて説明したが、更に、TCM(Tightly Coupled Memory)等のSRAMよりもプロセッサからの読み込み速度の速いメモリや、DRAMよりも読み込み速度の遅いメモリを備えるマイコンであっても良い。このような場合であっても、本実施形態において説明したように、関数の総実行時間の合計が最小になるように関数を配置することにより、同様の作用効果を得ることができる。   In the present embodiment, a microcomputer having two types of memories, DRAM and SRAM, has been described. Furthermore, a memory having a faster reading speed from a processor than an SRAM such as TCM (Title Coupled Memory) or a DRAM. A microcomputer having a memory with a slow reading speed may be used. Even in such a case, as described in the present embodiment, the same function and effect can be obtained by arranging the functions so that the total execution time of the functions is minimized.

1 関数配置装置
2 ソースコード
3 オブジェクトファイル
4 実行プログラム
5 プロファイル情報
11 コンパイラ
12 リンカ
13 プログラム実行部
14 プロファイラ
DESCRIPTION OF SYMBOLS 1 Function allocation apparatus 2 Source code 3 Object file 4 Execution program 5 Profile information 11 Compiler 12 Linker 13 Program execution part 14 Profiler

特開2003−271394号公報JP 2003-271394 A

Claims (9)

第一の記憶媒体及び前記第一の記憶媒体よりもプロセッサからの読み込み速度が遅い第二の記憶媒体の何れかに複数の関数が夫々読み出されて実行される実行プログラムにおける、前記複数の関数の配置順を決定する関数配置装置であって、
前記複数の関数を記述するソースコードに基づいて前記実行プログラムを生成する実行プログラム生成部と、
生成された前記実行プログラムに含まれる前記複数の関数夫々のデータサイズを算出するデータサイズ算出部と、
生成された前記実行プログラムに含まれる前記複数の関数夫々の実行時間を算出する実行時間算出部と、
を含み、
前記実行プログラム生成部は、前記データサイズ、前記実行時間、前記第一の記憶媒体の記憶容量、前記第一の記憶媒体及び前記第二の記憶媒体夫々の読み込み速度に基づいて前記複数の関数の前記実行プログラム内における配置順を決定することにより、前記実行プログラムが実行される際の、前記複数の関数夫々の前記第一の記憶媒体及び前記第二の記憶媒体への読み出し状態を決定することを特徴とする関数配置装置。
The plurality of functions in an execution program in which a plurality of functions are read out and executed in any one of the first storage medium and the second storage medium whose reading speed from the processor is slower than that of the first storage medium A function placement device for determining the placement order of
An execution program generation unit that generates the execution program based on source code describing the plurality of functions;
A data size calculator that calculates the data size of each of the plurality of functions included in the generated execution program;
An execution time calculation unit that calculates an execution time of each of the plurality of functions included in the generated execution program;
Including
The execution program generation unit is configured to calculate the plurality of functions based on the data size, the execution time, the storage capacity of the first storage medium, the reading speed of each of the first storage medium and the second storage medium. By determining the arrangement order in the execution program, the read state of the plurality of functions to the first storage medium and the second storage medium when the execution program is executed is determined. A function arrangement device characterized by the above.
前記実行時間算出部は、前記実行プログラムに含まれる前記複数の関数夫々が前記第二の記憶媒体に読み出されて実行された際の前記複数の関数夫々の実行時間である第二の実行時間を算出することを特徴とする請求項1に記載の関数配置装置。   The execution time calculation unit is a second execution time that is an execution time of each of the plurality of functions when each of the plurality of functions included in the execution program is read and executed on the second storage medium. The function allocating device according to claim 1, wherein 前記実行時間算出部は、前記第一の記憶媒体及び前記第二の記憶媒体夫々の読み込み速度の比に基づいて前記第二の実行時間から、前記実行プログラムに含まれる前記複数の関数夫々が前記第一の記憶媒体に読み出されて実行された際の前記複数の関数夫々の実行時間である第一の実行時間を算出することを特徴とする請求項2に記載の関数配置装置。 The execution time calculation unit is configured to calculate each of the plurality of functions included in the execution program from the second execution time based on a ratio of reading speeds of the first storage medium and the second storage medium. 3. The function arrangement device according to claim 2 , wherein a first execution time which is an execution time of each of the plurality of functions when read and executed on the first storage medium is calculated. 前記実行プログラム生成部は、前記ソースコードに基づいて前記複数の関数を生成し、
生成された前記複数の関数を記憶する関数記憶部を備えることを特徴とする請求項1乃至3いずれか1項に記載の関数配置装置。
The execution program generation unit generates the plurality of functions based on the source code,
4. The function arrangement device according to claim 1, further comprising a function storage unit that stores the plurality of generated functions. 5.
前記実行プログラム生成部は、前記複数の関数夫々の実行時間の合計が最も短くなるように前記複数の関数の前記実行プログラム内における配置順を決定することにより、前記実行プログラムが実行される際の、前記複数の関数夫々の前記第一の記憶媒体及び前記第二の記憶媒体への読み出し状態を決定することを特徴とする請求項1乃至4いずれか1項に記載の関数配置装置。   The execution program generation unit determines the arrangement order of the plurality of functions in the execution program so that the total execution time of each of the plurality of functions is the shortest, whereby the execution program is executed. 5. The function arrangement device according to claim 1, wherein a read state of each of the plurality of functions to the first storage medium and the second storage medium is determined. 前記実行プログラム生成部は、前記データサイズに基づいて前記第一の記憶媒体の記憶容量の上限に可能な限り近くなるように前記第一の実行時間の長い順に前記複数の関数を前記第一の記憶媒体に配置し、前記複数の関数のうち前記第一の記憶媒体に配置されなかった関数を前記第二の記憶媒体に配置するように、前記複数の関数の前記実行プログラム内における配置順を決定することにより、前記実行プログラムが実行される際の、前記複数の関数夫々の前記第一の記憶媒体及び前記第二の記憶媒体への読み出し状態を決定することを特徴とする請求項に記載の関数配置装置。 The execution program generator generates the first function in ascending order of the first execution time so as to be as close as possible to the upper limit of the storage capacity of the first storage medium based on the data size. An arrangement order of the plurality of functions in the execution program is arranged such that a function that is not arranged in the first storage medium among the plurality of functions is arranged in the second storage medium. by determining, in claim 3, wherein the determining the read state of the during the execution program is executed, to the plurality of functions each of said first storage medium and said second storage medium The function placement device described. 前記配置順は、前記複数の関数を前記第一の記憶媒体及び前記第二の記憶媒体の何れかに配置する際の配置可能な全配置順の中で最も実行時間が短くなるような配置順であることを特徴とする請求項1乃至6いずれか1項に記載の関数配置装置。   The arrangement order is such that the execution time is the shortest among all arrangement orders that can be arranged when the plurality of functions are arranged on either the first storage medium or the second storage medium. The function placement device according to claim 1, wherein the function placement device is a function placement device. 第一の記憶媒体及び前記第一の記憶媒体よりもプロセッサからの読み込み速度が遅い第二の記憶媒体の何れかに複数の関数が夫々読み出されて実行される実行プログラムにおける、前記複数の関数の配置順を決定する関数配置プログラムであって、
前記複数の関数を記述するソースコードに基づいて前記実行プログラムを生成するステップと、
生成された前記実行プログラムに含まれる前記複数の関数夫々のデータサイズを算出するステップと、
生成された前記実行プログラムに含まれる前記複数の関数夫々の実行時間を算出するステップと、
前記データサイズ、前記実行時間、前記第一の記憶媒体の記憶容量、前記第一の記憶媒体及び前記第二の記憶媒体夫々の読み込み速度に基づいて前記複数の関数の前記実行プログラム内における配置順を決定することにより、前記実行プログラムが実行される際の、前記複数の関数夫々の前記第一の記憶媒体及び前記第二の記憶媒体への読み出し状態を決定するステップと、
を実行させることを特徴とする関数配置プログラム。
The plurality of functions in an execution program in which a plurality of functions are read out and executed in any one of the first storage medium and the second storage medium whose reading speed from the processor is slower than that of the first storage medium A function placement program that determines the placement order of
Generating the execution program based on source code describing the plurality of functions;
Calculating a data size of each of the plurality of functions included in the generated execution program;
Calculating an execution time of each of the plurality of functions included in the generated execution program;
Arrangement order of the plurality of functions in the execution program based on the data size, the execution time, the storage capacity of the first storage medium, the reading speed of each of the first storage medium and the second storage medium Determining a read state of each of the plurality of functions to the first storage medium and the second storage medium when the execution program is executed,
The function configuration program characterized Rukoto is executed.
第一の記憶媒体及び前記第一の記憶媒体よりもプロセッサからの読み込み速度が遅い第二の記憶媒体の何れかに複数の関数が夫々読み出されて実行される実行プログラムにおける、前記複数の関数の配置順を決定する関数配置方法であって、
前記複数の関数を記述するソースコードに基づいて前記実行プログラムを生成し、
生成された前記実行プログラムに含まれる前記複数の関数夫々のデータサイズを算出し、
生成された前記実行プログラムに含まれる前記複数の関数夫々の実行時間を算出し、
前記データサイズ、前記実行時間、前記第一の記憶媒体の記憶容量、前記第一の記憶媒体及び前記第二の記憶媒体夫々の読み込み速度に基づいて前記複数の関数の前記実行プログラム内における配置順を決定することにより、前記実行プログラムが実行される際の、前記複数の関数夫々の前記第一の記憶媒体及び前記第二の記憶媒体への読み出し状態を決定することを特徴とする関数配置方法。
The plurality of functions in an execution program in which a plurality of functions are read out and executed in any one of the first storage medium and the second storage medium whose reading speed from the processor is slower than that of the first storage medium A function arrangement method for determining the arrangement order of
Generating the execution program based on source code describing the plurality of functions;
Calculating a data size of each of the plurality of functions included in the generated execution program;
Calculating an execution time of each of the plurality of functions included in the generated execution program;
Arrangement order of the plurality of functions in the execution program based on the data size, the execution time, the storage capacity of the first storage medium, the reading speed of each of the first storage medium and the second storage medium Determining the read state of each of the plurality of functions to the first storage medium and the second storage medium when the execution program is executed. .
JP2012019838A 2012-02-01 2012-02-01 Function allocation device, function allocation program, and function allocation method Expired - Fee Related JP5849744B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012019838A JP5849744B2 (en) 2012-02-01 2012-02-01 Function allocation device, function allocation program, and function allocation method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012019838A JP5849744B2 (en) 2012-02-01 2012-02-01 Function allocation device, function allocation program, and function allocation method

Publications (2)

Publication Number Publication Date
JP2013161110A JP2013161110A (en) 2013-08-19
JP5849744B2 true JP5849744B2 (en) 2016-02-03

Family

ID=49173341

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012019838A Expired - Fee Related JP5849744B2 (en) 2012-02-01 2012-02-01 Function allocation device, function allocation program, and function allocation method

Country Status (1)

Country Link
JP (1) JP5849744B2 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016157826A1 (en) 2015-03-30 2016-10-06 日本電気株式会社 Device and method for determining data placement destination, and program recording medium

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000003268A (en) * 1998-06-11 2000-01-07 Mitsubishi Electric Corp Method for deciding optimization of memory map
JP2011076516A (en) * 2009-10-01 2011-04-14 Seiko Epson Corp Arrangement instruction information update program

Also Published As

Publication number Publication date
JP2013161110A (en) 2013-08-19

Similar Documents

Publication Publication Date Title
JP5473768B2 (en) Method, system, and computer program for causing a computer to execute multipath dynamic profiling
CN104412240B (en) System and method for memory management
US9058192B2 (en) Handling pointers in program code in a system that supports multiple address spaces
JP5707265B2 (en) Arithmetic control device, arithmetic control method, program, and parallel processor
JP6432333B2 (en) Information processing apparatus, data processing method, and data processing program
KR102205899B1 (en) Method and apparatus for avoiding bank conflict in memory
US11226798B2 (en) Information processing device and information processing method
JP5849744B2 (en) Function allocation device, function allocation program, and function allocation method
JP2012247827A (en) Program generation device, program generation method and program
KR101603202B1 (en) Device and method for data relocatable remote procedure call in heterogeneous multiprocessor system on chip
JP5489884B2 (en) Instruction execution device, instruction execution method, and instruction execution program
JP5278538B2 (en) Compilation system, compilation method, and compilation program
JP4592367B2 (en) Program section layout method and layout processing program
KR102574449B1 (en) Metohd and apparatus for processing data
US10353708B2 (en) Strided loading of non-sequential memory locations by skipping memory locations between consecutive loads
JP5687603B2 (en) Program conversion apparatus, program conversion method, and conversion program
US10055359B2 (en) Pinning objects in multi-level memory hierarchies
JP6464980B2 (en) Program, information processing apparatus and information processing method
JP6519228B2 (en) Data allocation determination device, data allocation determination program, and data allocation determination method
JP4870956B2 (en) Embedded program generation method, embedded program development system, and information table section
US20110320781A1 (en) Dynamic data synchronization in thread-level speculation
EP2434409B1 (en) Processor and method thereof
JP2014010754A (en) Program development supporting device, and program development supporting tool
US20240193424A1 (en) Computer-readable recording medium storing distributed learning program, distributed learning method, and distributed learning device
WO2023182172A1 (en) Information processing method, program, and training method

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150119

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20150122

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150831

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150901

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151009

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20151104

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20151117

R151 Written notification of patent or utility model registration

Ref document number: 5849744

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

LAPS Cancellation because of no payment of annual fees