JP2007148556A - 関数割付方法および関数割付装置 - Google Patents

関数割付方法および関数割付装置 Download PDF

Info

Publication number
JP2007148556A
JP2007148556A JP2005339020A JP2005339020A JP2007148556A JP 2007148556 A JP2007148556 A JP 2007148556A JP 2005339020 A JP2005339020 A JP 2005339020A JP 2005339020 A JP2005339020 A JP 2005339020A JP 2007148556 A JP2007148556 A JP 2007148556A
Authority
JP
Japan
Prior art keywords
function
functions
cache
merged
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2005339020A
Other languages
English (en)
Inventor
Noriko Miyazaki
範子 宮崎
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.)
NEC Electronics Corp
Original Assignee
NEC Electronics Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Electronics Corp filed Critical NEC Electronics Corp
Priority to JP2005339020A priority Critical patent/JP2007148556A/ja
Publication of JP2007148556A publication Critical patent/JP2007148556A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Devices For Executing Special Programs (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】 全体としてプログラムの実行速度が低下してしまう場合があった。
【解決手段】 キャッシュを搭載するシステムのメモリに対して、アプリケーションプログラムの有する関数を配置していく関数割付方法であって、前記アプリケーションプログラムの有する関数のコードサイズを取得し、前記キャッシュのキャッシュラインサイズ、および関数のコードサイズに基づいて併合可能な関数の組み合わせを抽出し、前記併合可能な関数の組み合わせに基づいて、関数の併合を行い、前記併合された関数を含む前記アプリケーションプログラムの有する関数を前記メモリに配置する。
【選択図】 図7

Description

本発明は、関数と基本ブロックの命令キャッシュでのコンフリクト発生が低減するようにプログラムのメモリ空間への割付を行う配置割付装置および割付プログラムに関する。
近年、CPUの高速化が急速に進み、DRAMなどの外部メモリのアクセス時間とCPUの処理速度のギャップは大きくなっている。そこで、CPUから高速にアクセスできるバッファであるキャッシュを設け、外部メモリ上のプログラムの一部をキャッシュ内にコピーして実行する技術が広く使用されている。
ここで、外部メモリ上に記憶されたプログラムは、例えばソースコードなどの高級言語で書かれたプログラムを変換し、CPUで実行することが可能な機械語コードなどで記述されたプログラムである。これらのプログラムは、様々なプログラム上の手続き、サブルーチン、処理(以下、これらをまとめて関数と称す)を有し、1つの関数が実行されるときに、他の関数を呼び出した結果に基づいた処理などを行っている。
上記したキャッシュには、外部メモリの一部がコピーされ、CPUがある関数を実行する場合に、その関数がキャッシュに保持されていれば、CPUとキャッシュがアクセスを行うことで全体の処理速度を向上させている。
また、実行する関数がキャッシュに保持されていない場合は、実行する関数を外部メモリからキャッシュにコピーし直した後に関数が実行される。したがって、キュッシュの書き換え(キャッシュコンフリクト)が、頻繁に発生するとプログラムの実行速度が低下してしまう。キャッシュは外部メモリの一部がコピーされるものであるため、ソースプログラムをコンパイルする際に、キャッシュコンフリクトを低減させるように外部メモリ上に関数を割り付ける方法が研究されている。
外部メモリはキャッシュのサイズで区切った領域に分割されている。また、キャッシュはキャッシュラインと呼ばれる特定のサイズに分割されている。上記した外部メモリからキャッシュへのコピーはキャッシュライン単位で行われる。
したがって、外部メモリ上で同一のキャッシュラインに割り当てられた関数は、プログラムの実行中に関数が切り替わるたびにキャッシュにコピーし直す必要が生じる。このキャッシュラインに対して外部メモリの関数の割付最適化方式として特許文献1に記載されている技術がある。
特許文献1に記載の技術では、ある関数が他の関数を呼び出す回数に関する情報、互いの関数の呼び出しの関係などからメモリに対する関数の配置を最適化する技術が記載されている。
しかしながら、例えば携帯電話などの装置では、内蔵できるキャッシュに限界があり、そのサイズは外部メモリと比較して極めて小さくせざるを得ない。したがって、実行するプログラムのどの部分をキャッシュに格納するかがプログラムを高速に実行する上できわめて重要となる。従来の技術のように関数同士の呼び出し関係などに基づいてメモリ上に配置すると、メモリ上の配置を考慮する関数が増加してしまう場合があった。このような場合、外部メモリにおいて未使用領域が増加してしまい、メモリの使用効率が低下してしまう場合があった。また、関数の増加に伴い同じキャッシュラインに割り当てられる関数が増加し、キャッシュコンフリクトが増加してしまう場合があった。
特開2001−282547号公報
従来の関数のメモリ配置方法では、全体としてプログラムの実行速度が低下してしまう場合があった。
本発明の1態様による関数割付方法は、キャッシュを搭載するシステムのメモリに対して、アプリケーションプログラムの有する関数を配置していく関数割付方法であって、前記アプリケーションプログラムの有する関数のコードサイズを取得し、前記キャッシュのキャッシュラインサイズ、および関数のコードサイズに基づいて併合可能な関数の組み合わせを抽出し、前記併合可能な関数の組み合わせに基づいて、関数の併合を行い、前記併合された関数を含む前記アプリケーションプログラムの有する関数を前記メモリに配置する。
また、本発明の1態様による関数割付装置は、キャッシュを搭載するシステムのメモリに対して、アプリケーションプログラムの有する関数を配置していく関数割付装置であって、前記関数のコードサイズを取得するコードサイズ取得部と、前記関数のコードサイズおよび前記キャッシュのキャッシュラインサイズに基づいて併合可能な関数を選択する関数選択部と、前記関数選択部の選択した関数の関連度情報に基づいて、当該関数を併合する関数併合部と、前記併合された関数を含む前記アプリケーションプログラムが有する関数を前記メモリに配置するメモリ配置最適化部とを有する。
メモリを有効利用することが可能となる。またキャッシュコンフリクトを低減させ、全体としてプログラムの実行速度を上昇させることが可能である。
以下に、図面を参照して本発明の実施の形態について説明する。上記したようにプロセッサなどでは、プログラムの実行速度を速めるために、通常キャッシュと呼ばれる内部メモリが存在する。そこで、まず、このキャッシュと外部メモリのアドレス空間との関係をダイレクトマップ方式と呼ばれる方式を例に説明する。
図1は、キャッシュと外部メモリのメモリ空間の関係を示す模式図である。図1に示すように、キャッシュは、キャッシュラインと呼ばれる複数の領域に分割されている。図1に示す例ではキャッシュがキャッシュラインCL1〜CL4に分割されている。また、外部メモリはアドレスで規定されるメモリ空間を有している。ダイレクトマップ方式では、外部メモリ空間がキャッシュラインに相当するブロックに分割され、キャッシュラインと、外部メモリのブロックの対応が一意に決められている。図1に示した例では、外部メモリのアドレス00〜07がCL1に、08〜0FがCL2に、10〜17がCL3に18〜1FがCL4にというように割り当てられ、それに続くアドレスのメモリ空間も順次キャッシュラインに割り当てられている。
例えばC言語などの高級言語で書かれたアプリケーションプログラムは、機械語などに変換され、外部メモリに割りつけられる。本発明は、上記したようなメモリ空間を有する外部メモリに対して、プログラムを割り付けていく割付装置、割付方法に関している。以下の説明では、アプリケーションプログラム上に記述されたある一つの処理(サブルーチンなど)を、関数と称して説明する。ここでアプリケーションプログラムとは、複数の関数を順次処理してアプリケーションを実施するものである。また、アプリケーションプログラムでは、1つの関数を実行するときに他の関数を呼び出し、その結果に基づいた処理なども行われている。
上記を踏まえて、本発明の概要について図2乃至5を用いて説明する。図2は、あるアプリケーションプログラムを構成する関数と、その呼出関係を模式的に示したものである。図2に示す例では、A〜Gのそれぞれが1つの関数を示している。また、関数どうしを結ぶ辺は、関数の間に呼び出し関係があることを示している。また辺に付された数字は、呼び出し回数を示しているものとする。また、各関数の横に付された下線付き数字は、キャッシュラインのサイズを1とした場合の、コードのサイズを示している。
このような構成のアプリケーションプログラムを、関数の呼び出し関係、および呼び出し回数のみを基準に外部メモリに割り付けると、図3に示したようになる。図3は、図1と同様、キャッシュラインと外部メモリの対応も示している。なお、図3に用いられているアドレスは、キャッシュラインとメモリ空間の関係を理解しやすくするために便宜上付されているアドレスであり、実際はこの限りではない。
図3に示すように、各関数の呼び出し関係と、呼び出し回数のみを考慮して、メモリ空間に関数を配置した場合、キャッシュラインのサイズに満たない関数であっても、1つのキャッシュラインに相当するメモリのブロックに配置される。そのため、メモリの未使用領域が発生し、使用効率が低下してしまう。また、図2、図3に示した例では関数Aと関数Cが同じキャッシュラインCL1に対応するため、呼び出し関係を有する関数Aと関数Cでキャッシュコンフリクトが生じてしまう。
そこで、本発明では、例えば図2に示すような関係を有するアプリケーションプログラムに対し、各関数のコードサイズを考慮して、関数併合処理を行う。そして、関数併合処理を行った後の関係を元に、外部メモリに対して関数を割り付けていく。つまり、本発明ではキャッシュラインのサイズを満たさず、かつ、他の関数と併合することが可能な関数に関しては関数の併合を行った後に、外部メモリに割り付けて記憶させる。
図2に示した関数の関係図を参照すると、関数Eと関数Fは、ともにキャッシュラインのサイズを満たさず、また、この二つを併合してもキャッシュラインのサイズを超えてしまうことは無い。同様に関数Dと関数Gに関しても、この二つを併合してもキャッシュラインのサイズを超えてしまうことは無い。そこで、図2の例では、関数Eと関数Fの併合および関数Dと関数Gの併合処理が行われる。この関数の併合処理を行った後の各関数の関係を図4に示す。図4に示すように、関数Eと関数Fを1つの関数、関数Dと関数Gを1つの関数とすることにより、全体としての関数の減少が可能である。また、このような関係のプログラムを、外部メモリに割り付けた場合の模式図を図5に示す。
図5に示すように、関数の併合処理を行うことにより、図3に示す割付方式では8ブロック必要としていた外部メモリに対し、6ブロック分の外部メモリでプログラムを割り付けることが可能となる。また、図3に示した割付では関数Aと関数Cでキャッシュコンフリクトが発生していたのに対し、図5の割りつけでは、キャッシュコンフリクトが発生していない。
本発明は、このようにソースコードで既述されたプログラムを外部メモリに対して割り付ける際に、各関数の関連性、呼び出し回数、さらにサイズを考慮してコンパイルし、割付を行うものである。このような本発明の概要に基づいて、以下、本発明を実施するための配置割付装置について説明する。
図6は、本実施の形態の関数割付装置を示すブロック図である。本実施の形態の、関数割付装置1は、関数呼出情報出力部1、関数基本ブロック遷移情報出力部2、関数併合処理部3、関数メモリ配置最適化部4を有している。
関数呼出情報出力部1には、アプリケーションプログラム110が入力される。このアプリケーションプログラム110は、命令キャッシュを有するマイクロプロセッサ用のプログラムである。関数呼出情報出力部1は、プログラム110をプロファイルし、関数を呼び出すときの、呼び出し元の関数、呼び出し先の関数および呼び出し回数などを取得する。つまり、図2に示したような各関数の関係図を取得する。関数呼出情報出力部1が取得したこれらの情報は、関数呼出組み合わせ情報111として出力される。
関数基本ブロック遷移情報出力部2には、アプリケーションプログラム110が入力される。関数基本ブロック遷移情報出力部2は、プログラムをプロファイルし、関数に対して割り振ったIDと、各関数が呼び出す関数の順番の情報を取得する。この情報は、関数基本ブロック遷移情報112として出力される。例えば、図2において関数AのIDを0、関数BのIDを1、関数DのIDを3とした場合、関数Aが関数Bを呼び出し、関数Bが関数Dを呼び出すため、「1−2、2−3・・・」といった関数がどのように遷移していくかという情報が出力される。
関数併合処理部3には、アプリケーションプログラム110、関数呼出組み合わせ情報111および関数基本ブロック遷移情報112が入力される。関数併合処理部3は、アプリケーションプログラム110から、コードサイズを取得する。さらに関数呼出組み合わせ情報111および関数基本ブロック遷移情報112から、関数の関連性を取得する。そして、この関数の関連性とコードサイズから、併合処理を行ってもキャッシュラインのサイズを超えない関数の組み合わせを選出し、関数の併合を行う。併合された関数は、新たな1つの関数として認識されるため、関数併合処理部3は、関数呼出組み合わせ情報111および関数基本ブロック遷移情報112を更新して出力する。つまり、関数併合処理部3によって図4に示した関数の関係図が作成される。
関数メモリ配置最適化部4には、関数呼出組み合わせ情報111および関数基本ブロック遷移情報112が入力される。関数メモリ配置最適化部4は、呼び出し回数の多さ、キャッシュコンフリクトを回避するようにメモリ空間に対して関数の配置を行う。関数メモリ配置最適化部4は、関数呼出入替情報を生成し、出力する。また、関数メモリ配置最適化部4では、関数基本ブロック遷移情報112からキャッシュコンフリクト数を算出し、最もキャッシュコンフリクトが少ない配置結果を出力する。この関数メモリ配置最適化部4が行う動作は、従来と同様である。
上記したような本発明の配置割付装置において、従来と大きく異なる点は関数併合処理部3を有することである。そこで、関数併合処理部3が行う関数併合処理について以下に詳細に説明する。
図7は、本実施の形態の関数併合処理部3が行う動作を説明するフローチャートである。以下、図7を用いて、本実施の関数併合処理部3が行う動作について説明する。
まず、ステップS1において、関数併合処理部3には、アプリケーションプログラム110が入力される。関数併合処理部3では、入力されたアプリケーションプログラム110から、各関数のコードサイズが取得される。
ステップS2において、関数併合処理部3は、後述する関連度リスト120、つまり関数間の関連度が一度クリアされる。ここで言う関連度のクリアとは、関数呼出組み合わせ情報111自体をクリアするということではない。ここで、関連度をクリアすることは、この後の関数の併合により、併合された関数が他の関数を呼び出す回数や、呼び出す個数について変化が起こりえるために、以前のステップで作成された関連度を一度クリアすることである。
ステップS3において、関数併合処理部3は関数の併合についての検討を行う。ここでの組み合わせの検討は、全ての関数の組み合わせに対して併合の検討が行われる。つまり、併合の検討が行われていない関数の組み合わせがある場合は、ステップS3において全ての関数の併合の検討が終了していないと判断される。例えば、A、B、Cの3つの関数があった場合に、AとB、BとCの関数併合については検討が行われたが、AとCの組み合わせについて併合が検討されていない場合、全ての関数に関しての併合が検討されていないと判断される。また、この判断は、以降の処理で、関数が併合できないと判断された場合でも、その組み合わせに対する併合の検討が行われていれば、その組み合わせに対しては併合の検討が行われたと判断される。
ステップS4において、ステップS3で取り上げた関数の組み合わせのコードサイズの合計が、キャッシュラインのサイズを超えているかどうかが判断される。ここで、関数を併合した場合でもそのサイズがキャッシュラインのサイズを超えなければ、ステップS4では、その組み合わせが併合可能な関数同士であると一次判断される。
ステップS5において、関数呼出組み合わせ情報をもとに関数の関連度を計算し、併合することが可能な関数について、関連度リストが作成される。ここで、図2とは異なる簡単な関数の関係図を下に、このステップS5の処理について具体的に説明する。
図8(a)は、関数併合処理を行う前の関数の関係を示す模式図である。図8に示す例では関数としてA〜Fの6つの関数が存在している場合を示している。ここで、ステップS4までの処理により、関数AとDあるいは関数AとBを併合しても、そのコードサイズがキャッシュラインのサイズを超えず、一次判断では併合可能な関数だと判断されたとする。ステップS5では、以下のような判断基準を元に新たな関連度リスト120を作成するとする。
(1)互いに相関関係がある関数の関連度は高くなる。
図8(a)に示した例では関数同士を結ぶ辺がある関数は関連度が高くなる。つまり関数AとB、関数AとC、関数AとDなどである。
(2)共通する関数に相関関係がある関数同士の関連度は高くなる。
図8(a)に示した例では、関数Aと関数Dがそれぞれ関数Cと相関関係を有している。関数Aと関数Bが、それぞれ関数Cと相関関係を有している。そこで、関数AとDおよび関数AとBの関連度は高くなる。
(3)2つの関数を併合することにより、相関関係を持つ関数の数が増える場合は、その数に応じて2つの関数の関連度は低くなる
図8(a)に示した例では、関数AとB、関数AとDが併合してもキャッシュラインのサイズを超えない関数だと判断されている。そこで、上記の(1)、(2)を基準にすれば関数AとB、関数AとDどちらに関しても同様に関連度が高く設定される。ここで、この(3)について考察する。関数AとBを併合した場合、新たな関数A・Bを元にした関係は、図8(b)に示すようになり、関数C、D、E、Fと相関関係を有するようになる。つまり関数Aに対しては新たに関数Fとの相関関係が追加され、関数Bに対しては新たに関数D、Eとの相関関係が追加されるため、新たに3つの相関関係が追加される。
それに対し、関数AとDを併合した場合、図8(c)に示すようになり関数A・Dは関数B、C、Eと相関関係を持つようになる。つまり関数Aに対しては新たな相関関係は追加されず、関数Dに対しては新たに関数B、Eとの相関関係が追加されるため、新たに2つの相関関係が追加される。
このように、併合する関数の組み合わせによって増加する相関関係に基づいて、関数同士の関連度が設定される。図8(a)に示した例では関数AとDを併合した場合の方が相関関係を有する関数の増加が少ないため、関数AとDの方が関数AとBよりも関連度が高いと判断される。なお、ここで、相関関係をもつ関数が増える場合に関数の関連度を低くする理由は、相関関係を持つ関数が増加するとそれだけキャッシュコンフリクトが発生する可能性が高くなるためである。この関数同士の関連度は、ステップS6において関数呼出組み合わせ情報に、関連度リスト120として追加出力される。
ステップS3からS6では、このように全ての関数の組み合わせに対し、キャッシュラインサイズに対して関数が併合可能かどうか、またその関連性が判断され関数呼出組み合わせ情報に、関連度リストとして出力される。ステップS3からS6を繰り返し、全ての関数の組み合わせに対しての併合の可能性、関連度リスト120が作成された場合、ステップS3で、全ての組み合わせに対する検討が行われたと判断されステップS7へと進む。
ステップS7においては、ステップS5、S6によって出力された関数同士の関連度のリスト120の有無が確認される。ここで関連度のリストが存在しない場合は、ステップS3からS6を通じて、関数同士の併合が可能でかつ関連度があると判断された関数が存在しないことを示すので、関数併合処理は終了する。ここで、関数同士の関連度リスト120が存在する場合はステップS8へと進む。
ステップS8では、ステップS5、S6で作成された関連度リスト120に基づいて、最も関連性が高い関数の組み合わせが選出され、ステップS9へと進む。
ステップS9では、関数の併合が行われる。例えば図8(a)に示した例では、関数AとDが併合され、新たな関数A・Dとされる。そして、この新たな関数A・Dを1つの関数とみなした場合に基づいて、関数呼出組み合わせ情報、関数基本ブロック遷移情報の更新が行われる。つまり、図8(c)に示したような図に対応する呼出組み合わせ情報、基本ブロック遷移情報が生成される。また、関数のコードサイズも新たな関数A・Dを基準として更新される。
その後、関数併合処理部3の処理はステップS2に戻る。この時、関数呼出組み合わせ情報、関数基本ブロック遷移情報は更新されているので、関数A・Dは、新たな1つの関数として認識される。そのため、以前のステップで作成された関数AとDの関連度などに関してのリスト120はクリアされ、A・Dを1つの関数とみなして、ステップS3〜S6と同様の動作が繰り返される。
このように、本実施の形態では、関数併合処理部3が、関数のコードサイズ、および関連度を元に併合できる関数がなくなるまで関数の併合処理を繰り返す。
このように併合された関数は、1つの関数として認識され、それに基づいた関数呼出組み合わせ情報、関数基本ブロック遷移情報が関数メモリ配置最適化部4へと入力される。
そのため、関数メモリ配置最適化部では、キャッシュラインに対応するメモリ空間を有効に利用する形で、プログラムの関数をメモリに割り付けていくことが可能となる。また、キャッシュコンフリクト数を低減させることが可能となる。
つまり、本実施の形態では、ソースコードなどの高級言語で記述されたプログラムを機械語などに変換し、メモリ空間へと割り付けていく関数割付装置(コンパイラ)が、関数併合処理部3を有している。
この関数併合処理部3は、アプリケーションプログラムから関数のコードサイズを取得する部分と、取得したコードサイズと、キャッシュラインのサイズを元に併合可能な関数の組み合わせを検討する部分、また、関数同士の組み合わせに対してその関連度を算出する部分を有している。そして、この関連度を元に新たな関数呼出組み合わせ情報などが生成され、関数メモリ配置最適化部において、関数がメモリ空間に配置されていく。そのため、メモリ空間に対して、関数を配置するときにメモリ空間を有効に利用することが可能となる。また、キャッシュ自体も有効に利用することが可能となるため、キャッシュコンフリクトを減少させることが可能となる。特に、キャッシュのサイズが限定されてしまうような場合はキャッシュコンフリクトを減少させることはプログラムの実行速度を高める上で極めて有用である。
以上、本実施の形態に基づいて詳細に説明したが、本発明の主旨を逸脱しない限り本発明は種々の変形が可能である。例えば、実施の形態では関数の呼び出し回数、関係がある関数の個数などに基づいて関数同士の関連度を設定しているが、その他の要素も考慮して関数の関連度を設定することも可能である。また、関数呼出組み合わせ情報、関数基本ブロック遷移情報などに関しては必ずしも本実施の形態に記載された情報のみを有するものには限らない。本発明ではそれらの情報から、キャッシュラインサイズ、コードサイズを考慮して、関数の併合を行うものであり、関数の関連性とその遷移状態を含む情報であればよい。
キャッシュと外部メモリの関係を示す図である。 関数の関係図の一例を示す図である。 従来の関数割付によるキャッシュとメモリの関係を示す図である。 関数併合を行った場合の関数の関係図の一例を示す図である。 関数併合を行った場合のキャッシュとメモリの関係を示す図である。 本実施形態の関数割付装置を示す図である。 本実施形態の関数併合処理部の動作を示す図である。 関数併合を行う場合の関数の関係図の一例を示す図である。
符号の説明
1 関数呼出情報出力部
2 関数基本ブロック遷移情報出力部
3 関数併合処理部
4 関数メモリ配置最適化部
110 アプリケーションプログラム
111 関数組み合わせ呼出情報
112 関数基本ブロック遷移情報
120 関連度リスト

Claims (5)

  1. キャッシュを搭載するシステムのメモリに対して、アプリケーションプログラムの有する関数を配置していく関数割付方法であって、
    前記アプリケーションプログラムの有する関数のコードサイズを取得し、
    前記キャッシュのキャッシュラインサイズ、および関数のコードサイズに基づいて併合可能な関数の組み合わせを抽出し、
    前記併合可能な関数の組み合わせに基づいて、関数の併合を行い、
    前記併合された関数を含む前記アプリケーションプログラムの有する関数を前記メモリに配置する関数割付方法。
  2. 前記関数割付方法は、さらに、
    前記併合可能な関数の組み合わせの関連度を算出して関連度リストを生成し、前記関数の併合は、前記併合可能な関数の組み合わせおよび前記関連度リストに基づいて行われることを特徴とする請求項1に記載の関数割付方法。
  3. 前記関数の関連度は、関数が他の関数を呼び出す呼出回数に応じて設定されることを特徴とする請求項2に記載の関数割付方法。
  4. 前記関数の関連度は、関数が呼び出す他の関数の数に応じて設定されることを特徴とする請求項2あるいは3に記載の関数割付方法。
  5. キャッシュを搭載するシステムのメモリに対して、アプリケーションプログラムの有する関数を配置していく関数割付装置であって、
    前記関数のコードサイズを取得するコードサイズ取得部と、
    前記関数のコードサイズおよび前記キャッシュのキャッシュラインサイズに基づいて併合可能な関数を選択する関数選択部と、
    前記関数選択部の選択した関数の関連度情報に基づいて、当該関数を併合する関数併合部と、
    前記併合された関数を含む前記アプリケーションプログラムが有する関数を前記メモリに配置するメモリ配置最適化部とを有する関数割付装置。
JP2005339020A 2005-11-24 2005-11-24 関数割付方法および関数割付装置 Pending JP2007148556A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005339020A JP2007148556A (ja) 2005-11-24 2005-11-24 関数割付方法および関数割付装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005339020A JP2007148556A (ja) 2005-11-24 2005-11-24 関数割付方法および関数割付装置

Publications (1)

Publication Number Publication Date
JP2007148556A true JP2007148556A (ja) 2007-06-14

Family

ID=38209935

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005339020A Pending JP2007148556A (ja) 2005-11-24 2005-11-24 関数割付方法および関数割付装置

Country Status (1)

Country Link
JP (1) JP2007148556A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009032198A (ja) * 2007-07-30 2009-02-12 Fujitsu Microelectronics Ltd キャッシュカラーリング方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0683633A (ja) * 1992-08-31 1994-03-25 Nec Corp 言語処理プログラムの実行方式
JP2000066899A (ja) * 1998-08-19 2000-03-03 Nec Corp 実行オブジェクト最適化装置
JP2000112767A (ja) * 1998-09-30 2000-04-21 Nec Ic Microcomput Syst Ltd コンパイラ及びその変数割り付け方法及びそのプログラ ム記録媒体
JP2001216140A (ja) * 2000-01-31 2001-08-10 Nec Microsystems Ltd 命令キャッシュ関数割付装置、割付最適化方法および割付最適化手順を記録した記録媒体
JP2001282547A (ja) * 2000-03-28 2001-10-12 Nec Microsystems Ltd 命令キャッシュへの関数割付最適化装置、関数割付最適化方法及び関数割付最適化手順を記録した記録媒体
JP2003271394A (ja) * 2002-03-19 2003-09-26 Nec Electronics Corp 関数と基本ブロックの配置割付装置および割付最適化プログラム

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0683633A (ja) * 1992-08-31 1994-03-25 Nec Corp 言語処理プログラムの実行方式
JP2000066899A (ja) * 1998-08-19 2000-03-03 Nec Corp 実行オブジェクト最適化装置
JP2000112767A (ja) * 1998-09-30 2000-04-21 Nec Ic Microcomput Syst Ltd コンパイラ及びその変数割り付け方法及びそのプログラ ム記録媒体
JP2001216140A (ja) * 2000-01-31 2001-08-10 Nec Microsystems Ltd 命令キャッシュ関数割付装置、割付最適化方法および割付最適化手順を記録した記録媒体
JP2001282547A (ja) * 2000-03-28 2001-10-12 Nec Microsystems Ltd 命令キャッシュへの関数割付最適化装置、関数割付最適化方法及び関数割付最適化手順を記録した記録媒体
JP2003271394A (ja) * 2002-03-19 2003-09-26 Nec Electronics Corp 関数と基本ブロックの配置割付装置および割付最適化プログラム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009032198A (ja) * 2007-07-30 2009-02-12 Fujitsu Microelectronics Ltd キャッシュカラーリング方法
US8341354B2 (en) 2007-07-30 2012-12-25 Fujitsu Semiconductor Limited Cache coloring method and apparatus based on function strength information

Similar Documents

Publication Publication Date Title
US8266603B2 (en) Technique for allocating register to variable for compiling
KR101360512B1 (ko) 기록 마스크를 사용하는 simd 아키텍처에 의한 레지스터 할당
US6973644B2 (en) Program interpreter
JP2001147819A (ja) 最適化装置および記録媒体
JP5204300B2 (ja) マルチスレッド上で動作するプログラムのプログラム・コードをロック衝突が少ないプログラム・コードに変換するための方法、並びにそのコンピュータ・プログラム及びコンピュータ・システム
US20100229161A1 (en) Compile method and compiler
US20080005722A1 (en) Compiling device, compiling method and recording medium
JP2006260096A (ja) プログラム変換方法およびプログラム変換装置
US20040139427A1 (en) Method and system for performing global processor resource assignment in an assembler
CN102099786A (zh) 程序优化方法
US8266416B2 (en) Dynamic reconfiguration supporting method, dynamic reconfiguration supporting apparatus, and dynamic reconfiguration system
EP0933702A2 (en) Language processing method and language processing system improving use efficiency of cache memory
JP2007148556A (ja) 関数割付方法および関数割付装置
JP2008305337A (ja) プログラム変換装置、プログラム変換方法、プログラム、記憶媒体、デバッグ装置、デバッグ方法及びプログラム開発システム
JP3863544B1 (ja) 演算処理装置及び演算処理方法
WO2017204139A1 (ja) データ処理装置、データ処理方法、およびプログラム記録媒体
JP4039633B2 (ja) 最適化コンパイラ、コンパイル方法、コンパイラプログラム、及び記録媒体
CN101630268B (zh) 同步优化的方法及设备
JP2003216442A (ja) プログラム変換方法、これを用いたコンピュータ装置及びプログラム
US20120042129A1 (en) Arrangement method of programs to memory space, apparatus, and recording medium
JP2009258796A (ja) プログラム開発装置及びプログラム開発方法
JP6627630B2 (ja) コンパイル方法、コンパイルプログラム及び情報処理装置
JPH06214803A (ja) 仮想空間ブロック配置方式
KR100912114B1 (ko) 디지털 신호처리 프로세서에서 효과적인 데이터 전송을위한 메모리 운용 방법
JP2009259078A (ja) バッファオーバーフロー検出方法、バッファオーバーフロー検出プログラム、およびバッファオーバーフロー検出装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20081016

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110712

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110726

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110915

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20111122