JP5849744B2 - Function allocation device, function allocation program, and function allocation method - Google Patents
Function allocation device, function allocation program, and function allocation method Download PDFInfo
- 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
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.
以下、図面を参照して、本発明の実施形態を詳細に説明する。本実施形態においては、プロセッサからの読み込み速度の速い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
リンカ12は、コンパイラ11で生成されたオブジェクトファイル3をリンクして各関数をSRAM又はDRAMの何れかに配置することにより実行プログラム4を生成する。即ち、ここでは、コンパイラ11及びリンカ12は、実行プログラム生成部として機能する。また、リンカ12は、コンパイラ11で生成されたオブジェクトファイル3をリンクする際に、各関数のデータサイズを算出する。即ち、ここでは、リンカ12は、データサイズ算出部として機能する。尚、各関数のデータサイズは、リンカ12の他、専用のツールによって算出されるようにしても良い。そして、リンカ12は、算出した関数のデータサイズ、後述するRAM情報、プロファイラ14が生成したプロファイル情報5に基づいて、各関数をSRAMかDRAMの何れかに配置するかを決定する。
The
プログラム実行部13は、リンカ12で生成された実行プログラム4を実行する。プロファイラ14は、プログラム実行部13によるプログラム実行時の関数呼び出しをプロファイリングしてプロファイル情報5を生成する。ここで、プロファイル情報5には、各関数をDRAMに配置した場合の関数毎の総実行時間が含まれる。尚、プロファイラ14により生成されたプロファイル情報5は、図示しない記録媒体に記録されてリンカ12によるオブジェクトファイル3のリンクの際に参照される。
The
尚、プロファイラ14は、実行プログラム中の命令コードを1命令ずつ解釈しながら関数実行時間等を監視するソフトウェアであり、例えば、DBA(Dynamic Binary Analysis)ツール等のソフトウェアが知られている。以下では、リンカ12により算出された関数のデータサイズと、プロファイル情報5に含まれる総実行時間とをまとめて関数情報とする。
The
次に、本実施形態に係る関数配置装置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
次に、本実施形態に係る関数配置装置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
次に、リンカ12は、S401で生成されたオブジェクトファイル3を再度リンクすることにより、S402で算出されたデータサイズ、S404で生成されたプロファイル情報5、図2において説明したRAM情報に基づいて、関数配置を最適化して実行プログラム4を生成し(S405)、本実施形態に係る関数配置装置1は、関数配置を最適化して実行プログラムを生成する際の処理を終了する。
Next, the
尚、S405の処理において、リンカ12は、プログラム実行部13により実行プログラム4を実行した際の関数の総実行時間が最小になるように、生成した複数の関数をSRAMとDRAMとに配置する。また、S405の処理において、S401で生成されたオブジェクトファイル3が関数配置装置1から読み出し可能な状態になければ、コンパイラ11が再度ソースコード2を受け取ってコンパイルし、オブジェクトファイル3を再び生成するようにしても良い。
In the process of S405, the
次に、本実施形態に係る関数配置装置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
リンカ12は、S501で選択した関数について、図3を参照してSRAMに配置された場合の総実行時間の合計T1を算出し、また、S501で選択しなかった関数について、図3を参照してDRAMに配置された場合の総実行時間の合計T2を算出し、T1とT2の総和を関数の総実行時間の合計Tとして算出する(S502)。即ち、S502では、マイコンにおけるプロセッサによる実行プログラム4の実行時間が算出される。
The
リンカ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
このようにして関数配置の最適化を行った結果、図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
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乃至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.
前記複数の関数を記述するソースコードに基づいて前記実行プログラムを生成するステップと、
生成された前記実行プログラムに含まれる前記複数の関数夫々のデータサイズを算出するステップと、
生成された前記実行プログラムに含まれる前記複数の関数夫々の実行時間を算出するステップと、
前記データサイズ、前記実行時間、前記第一の記憶媒体の記憶容量、前記第一の記憶媒体及び前記第二の記憶媒体夫々の読み込み速度に基づいて前記複数の関数の前記実行プログラム内における配置順を決定することにより、前記実行プログラムが実行される際の、前記複数の関数夫々の前記第一の記憶媒体及び前記第二の記憶媒体への読み出し状態を決定するステップと、
を実行させることを特徴とする関数配置プログラム。 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. .
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)
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)
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 |
-
2012
- 2012-02-01 JP JP2012019838A patent/JP5849744B2/en not_active Expired - Fee Related
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 |