JP4592367B2 - プログラムセクションレイアウト方法およびレイアウト処理プログラム - Google Patents

プログラムセクションレイアウト方法およびレイアウト処理プログラム Download PDF

Info

Publication number
JP4592367B2
JP4592367B2 JP2004262490A JP2004262490A JP4592367B2 JP 4592367 B2 JP4592367 B2 JP 4592367B2 JP 2004262490 A JP2004262490 A JP 2004262490A JP 2004262490 A JP2004262490 A JP 2004262490A JP 4592367 B2 JP4592367 B2 JP 4592367B2
Authority
JP
Japan
Prior art keywords
program
section
sections
storage area
group storage
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.)
Active
Application number
JP2004262490A
Other languages
English (en)
Other versions
JP2006079338A (ja
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.)
Fujitsu Semiconductor Ltd
Original Assignee
Fujitsu Semiconductor 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 Fujitsu Semiconductor Ltd filed Critical Fujitsu Semiconductor Ltd
Priority to JP2004262490A priority Critical patent/JP4592367B2/ja
Priority to US11/019,195 priority patent/US7970997B2/en
Publication of JP2006079338A publication Critical patent/JP2006079338A/ja
Application granted granted Critical
Publication of JP4592367B2 publication Critical patent/JP4592367B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44557Code layout in executable memory

Description

本発明はプログラムセクションレイアウト方法およびレイアウト処理プログラムに関し、特にプログラム実行時に一部のプログラムセクションをキャッシュメモリに格納して動作するコンピュータのプログラムセクションレイアウト方法およびレイアウト処理プログラムに関する。
従来からキャッシュメモリが用意されたプログラム実行環境において、キャッシュメモリの使用効率を上げるプログラムセクションの配置方法が求められている。
一般的にキャッシュを実装するにはコストがかかるため、プログラム全体が格納されるメモリと比較してキャッシュサイズは小さい。そこで、プログラム格納メモリをキャッシュサイズ単位で分割し、キャッシュメモリとプログラム格納メモリの分割領域とを対応付け、分割領域ごとにプログラムセクションを任意のアルゴリズムに従って配置しておく。あるアドレスに対する最初アクセスで、そのアドレスに対応するプログラムセクションをキャッシュメモリの割当て領域にコピーし、次に同じアドレスでアクセスがあった場合、キャッシュメモリを直接アクセスする。このようにすることで、高速なプログラム処理を実現している。アクセスの際に該当するプログラムセクションがキャッシュメモリに存在しないキャッシュミスが発生したときには、再びプログラム格納メモリからコピーを行う。アルゴリズムは、キャッシュミスを削減するように設定される。
また、プログラム格納メモリからキャッシュメモリへのコピーは、所定のサイズ単位で行われ、このサイズでキャッシュを分割した領域をキャッシュラインと呼ぶ。したがって、同一のキャッシュラインに割当てられたプログラムセクションは、いずれか一つだけがキャッシュ上にコピーされている。このため、プログラムが切替えられるごとにキャッシュにプログラムをコピーし直す必要が生じる。これをキャッシュ・コンフリクトという。このようなキャッシュ・コンフリクトやキャッシュミスが頻繁に発生すると、結果としてプログラムの実行速度が遅くなってしまうという問題がある。
そこで、命令キャッシュに関し、仮想命令処理単位のメモ上の配置を動的に入れ替え、インタプリタ実行時における命令キャッシュのヒット率の向上を図る方法がある(たとえば、特許文献1参照)。また、直接的、間接的にキャッシュ・コンフリクトを発生する可能性のある関数呼び出しパターンを抽出し、このパターンを避けながら実行頻度の高い関数順にプログラムを配置するレイアウト方法がある(たとえば、特許文献2参照)。
特開2000−267861号公報(段落番号〔0023〕〜〔0030〕、図1) 特開2001−216140号公報(段落番号〔0033〕〜〔0038〕、図1)
従来のプログラムセクションレイアウト方法では、キャッシュメモリの使用効率を上げるための様々なアルゴリズムがとられているが、キャッシュミスを削減するためにプログラム構造の解析や関数の呼び出し関係の解析を行うなど、アルゴリズムのプログラム依存性が高くなっているという問題点がある。この結果、アルゴリズムの種類も多くなり、レイアウト処理の自動化を難しくしている。
また、上記アルゴリズムに従ってプログラムセクションの順序付けが行われると、順番に従ってキャッシュサイズ単位の分割領域に配置する。同じ分割領域内に配置されるプログラムセクションの一群をセクショングループと呼ぶ。そして、1つのセクショングループに配置されたプログラムセクションサイズの合計が分割領域のサイズ、すなわち、キャッシュサイズ単位を超えた場合、新規セクショングループを作成してプログラムセクションを配置していく。こうして、プログラムセクションはいずれかのセクショングループに属してプログラム格納メモリ上に配置される。
しかしながら、プログラムセクションはそれぞれにサイズが異なっており、順序付けられたプログラムセクションを順に分割領域に割当てていくと、使用されない無駄な領域ができてしまうという問題点がある。この結果、全体のプログラムセクションを格納するために必要なメモリサイズが大きくなってしまうという問題点がある。特に、プログラムをROM(Read Only Memory)に格納する場合など、プログラムセクション領域が有限なプログラム実行環境においては、キャッシュメモリの使用効率の向上とともに、プログラムセクションサイズを抑えることが求められている。
本発明はこのような点に鑑みてなされたものであり、プログラムの性質によらずキャッシュの使用効率を向上させるプログラムセクションレイアウト方法およびレイアウト処理プログラムを提供することを目的とする。また、本発明の他の目的は、レイアウト後のプログラムセクションサイズを抑えることにある。
本発明では上記課題を解決するために、コンピュータに図1に示すような処理手順を実行させるプログラムセクションレイアウト方法が提供される。
このようなプログラムセクションレイアウト方法によれば、キャッシュメモリに対応させ、キャッシュメモリサイズ単位に分割されたメモリ上の領域(セクショングループ格納領域)に格納するプログラムセクションをグループ分けし、セクショングループを構成するプログラムセクションの配置順を最適化する。プログラムセクションは、任意の処理機能の実行単位であり、たとえば、C言語の場合の関数などに相当する。このとき、グループ分け手段1では、プログラムセクションを所定のアルゴリズムに基づく順序に従って、セクショングループにグループ分けする。同一のセクショングループにグループ分けされたプログラムセクションの一群は、同一のセクショングループ格納領域に配置される。グループ分け手段1では、グループ分けされたプログラムセクションの合計サイズがキャッシュメモリサイズを超えないようにグループ分けを行う。続いて、レイアウト最適化手段2は、グループ分けによって決められたセクショングループを構成するプログラムセクションの配置関係を保持したまま、レイアウトの最適化を行う。このとき、配置関係、すなわち、プログラムセクションの配置順序は、そのままもしくは逆順にして保持される。レイアウト最適化では、配置関係を保持したまま、セクショングループとグループ分けされなかったプログラムセクション、もしくはセクショングループ同士を組み合わせて、再レイアウトを行う。
本発明のプログラムセクションレイアウト方法では、所定のアルゴリズムで順序付けされるプログラムセクションをグループ分けして配置した後、セクショングループ内のプログラムセクションの配置関係を保持したまま、セクショングループとセクショングループに属さないプログラムセクション、もしくはセクショングループ同士を組み合わせて、再レイアウトする。これによりアルゴリズム結果を保持しながら、セクショングループ同士やセクショングループと単独のプログラムセクションを組み合わせることによってセクショングループ格納領域のレイアウトを最適化することができる。すなわち、アルゴリズム結果をそのまま利用して最適化を行うので、プログラムの性質などによらず最適化される。この結果、プログラムの性質によらずキャッシュの使用効率を向上させることが可能となる。また、レイアウト後のメモリ領域のサイズを抑えることができる。
以下、本発明の実施の形態を図面を参照して説明する。まず、実施の形態に適用される発明の概念について説明し、その後、実施の形態の具体的な内容を説明する。
本発明は、キャッシュメモリを搭載したコンピュータ用のアプリケーションプログラムについて、キャッシュミスを削減し、メモリ使用効率を向上させるプログラムセクションレイアウト方法を実現する。図1は、実施の形態に適用される発明の概念図である。
本発明に係るプログラムセクションレイアウト方法は、このプログラムセクションレイアウト方法の処理手順をコンピュータに実行させるレイアウト処理プログラムによって実現される。レイアウト処理プログラムをコンピュータに実行させることにより、コンピュータはプログラムセクションレイアウト方法による処理手順を実行し、レイアウト処理装置として機能する。
レイアウト処理装置は、プログラムセクションをグループ分けするグループ分け手段1とレイアウト最適化手段2を具備する。なお、プログラムセクションは、任意の処理機能の実行単位、たとえば、C言語の場合の関数などに相当する。グループ分け手段1には、ソースプログラムをコンパイル/アセンブルしたオブジェクトの形式で入力する。また、プログラムセクションには、コード(命令)セクションとデータセクションとがあるが、本発明はコードセクションに関するものである。
グループ分け手段1は、プログラムセクションを所定のアルゴリズムによって、グループ分けする。このとき生成されるセクショングループは、キャッシュメモリサイズ単位で分割されたプログラム格納領域のセクショングループ格納領域の1つに配置されるプログラムセクション群を指す。図の例では、グループ1メモリ領域101、グループ2メモリ領域102、グループ3メモリ領域103が、それぞれのセクショングループ格納領域に相当する。グループ分けにおいては、所定のアルゴリズムに基づく順序に従って、順番が最上位(もしくは最下位)のプログラムセクションから順にグループ1へグループ分けしていく。グループ1へグループ分けされたプログラムセクションの合計サイズがセクショングループ格納領域のメモリサイズ(キャッシュサイズに相当する)を超えない範囲で順次プログラムセクションをグループ分けしていく。そのプログラムセクションでサイズが超えてしまう場合、新たなセクショングループが設定され、同様の処理を繰り返す。このようにして、所定のアルゴリズムに基づく順序に従って、グループ1から順にプログラムセクションがグループ分けされる。
レイアウト最適化手段2は、このようにしてグループ分けされ、順序に従ってプログラムセクションが配置されたセクショングループについて、セクショングループ内の配置関係を保持しながら、セクショングループとグループ分けされなかったプログラムセクション、もしくはプログラムセクション同士を組み合わせ、レイアウトの最適化処理を行い、最適化されたリンク情報を出力する。セクショングループ内の配置関係を保持するとは、所定のアルゴリズムに従って順序付けて配置されたプログラムセクションの配列を保持することを意味し、配列をそのままの順序で保持する場合と、逆順に並べ替える場合とがある。たとえば、参照頻度によって参照頻度の高いものから順番に配置されたプログラムセクションを逆順に並び替えると、参照頻度の低いものから順番に配置されることになり、アルゴリズムの主題は保持されている。最適化処理について説明する。たとえば、セクショングループとグループ分けされていないプログラムセクションの場合、グループ分け終了後、グループ1メモリ領域101内には、プログラムセクションが格納された領域101aと、次の順番のプログラムセクションが格納できなかったために生じた隙間領域101bがある。最適化処理では、この隙間領域101bに、割当てなし領域104に格納されているグループ割当てされなかったプログラムセクションが配置可能であるかどうかを判定し、可能であれば、隙間領域101bにこれを配置する。ここでは、割当てなし領域104の最後尾のプログラムセクション104aがグループ1メモリ領域101の隙間領域101bに配置されている。また、最適化処理として、各セクショングループのプログラムセクションの配列を逆順にすることもできる。
以上の処理手順が実行されることにより、アルゴリズムに従った配置結果を保持しながら、セクショングループ格納領域のレイアウトを最適化することができる。
以下、実施の形態を図面を参照して詳細に説明する。
図2は、プログラムセクションレイアウト方法が適用されるシステム構成の一例を示した概略図である。
コンピュータのプログラム開発を支援する支援装置では、コーディングされたソースプログラムが作成されると、コンパイラ/アセンブラ部10でコンパイル処理とアセンブル処理が実行され、オブジェクトファイルが生成される。オブジェクトファイルは、処理機能単位の複数のオブジェクトセクションから構成される。作成されたオブジェクトセクションは、リンカ部20によってリンクされ、コンピュータが実行可能なロードオブジェクトが作成される。ここで、リンカ部20は、オブジェクトセクションをある基準で並べ替えることができる。リンカ部20によって作成されたロードオブジェクトは、プロファイル部30でシミュレーション実行され、性能評価が行われる。性能評価として、たとえば、セクションごとのキャッシュ情報、呼び出し回数、占有率などが測定される。プロファイル部30で得られた性能評価に基づいて、リンカ部20でオブジェクトセクションが再配置される。なお、支援装置は、コーディング、コンパイラ/アセンブラ、リンカ、プロファイルの各処理を同一の装置で行うこともできるし、各処理を分担する複数の装置からなるシステム構成としてもよい。実施の形態のプログラムセクションレイアウト方法は、リンカ部20に適用される。
リンカ部20の処理機能を実現するレイアウト処理装置について説明する。図3は、本実施の形態のレイアウト処理装置のハードウェア構成例を示すブロック図である。
レイアウト処理装置100は、CPU(Central Processing Unit)111によって装置全体が制御されている。CPU111には、バス117を介してRAM(Random Access Memory)112、ハードディスクドライブ(HDD:Hard Disk Drive)113、グラフィック処理装置114、入力インタフェース115、通信インタフェース116が接続されている。
RAM112には、CPU111に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM112には、CPU111による処理に必要な各種データが格納される。HDD113には、OSやアプリケーションのプログラムが格納される。グラフィック処理装置114には、モニタ118が接続されており、CPU111からの命令に従って画像をモニタ118の画面に表示させる。入力インタフェース115には、キーボード119aやマウス119bが接続されており、キーボード119aやマウス119bから送られてくる信号を、バス117を介してCPU111に送信する。通信インタフェース116は、ネットワーク120に接続されており、ネットワーク120を介して外部装置との間でデータの送受信を行う。
このようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。なお、図2に示した処理機能を実現する支援装置も同様のハードウェア構成で実現することができる。
以下、レイアウト処理手順について詳細に説明する。まず、第1の実施の形態として、セクショングループとグループ分けされなかったプログラムセクションを組み合わせる場合について説明し、次に、第2の実施の形態として、セクショングループ同士を組み合わせる場合について説明する。以下、プログラムセクションはセクション、セクショングループは単にグループと表記する。
[第1の実施の形態]
第1の実施の形態では、プロファイル部30によって作成された性能評価に基づくアルゴリズムによって、プログラムセクションのグループ分けを行う。
図4は、第1の実施の形態のグループ分け処理手順を示したフローチャートである。プロファイル部30による性能評価取得後、処理が起動される。
[ステップS11] 新規グループを作成する。グループは、キャッシュサイズ単位に分割されるグループ格納領域に対応して設けられる。
[ステップS12] 性能評価結果に基づくアルゴリズムに従って、次の順番で配置されるセクションを検索する。
[ステップS13] 該当するセクションがあるかどうかが判定され、セクションがない場合は処理をステップS16へ進める。
[ステップS14] 該当するセクションがあった場合、このグループの残りの領域のサイズと検索されたセクションのサイズを比較し、セクションをグループに設定した場合にグループ格納領域サイズ(キャッシュサイズ)内に収まるかどうかを判定する。サイズに収まらない場合は、ステップS11に戻って、新規グループの作成からの処理を行う。
[ステップS15] 次の順番に該当するセクションがグループ格納領域サイズに収まる場合、そのセクションをグループに追加する。そして、処理をステップS12へ進め、次のセクション検索からの処理を行う。
[ステップS16] グループに配置されるセクションがない場合、グループごとに生じたグループ格納領域の隙間を埋める処理を行う。隙間埋め処理の詳細は後述する。
[ステップS17] オプション作成の要求があれば、オプション作成処理を実行する。
隙間埋め処理について説明する。図5は、第1の実施の形態の隙間埋め処理の手順を示したフローチャートである。
セクションがグループ分けされた後、処理が開始される。グループ分けにより、セクションが配置された複数のグループと、グループ分けされないセクションとがアルゴリズムに基づく順序に従って並べられている。グループ分けされないセクションとは、アルゴリズムによってグループ分けする必要がないと判定されるセクションで、たとえば、呼び出し回数の多い順に並べた場合、呼び出し回数が0のものをグループ分けしないと設定したような場合に生じる。
また、処理が開始される前に、あらかじめ、膨張率の制限値や最大サイズなどが設定される(ステップS61)。ここで、膨張率は、全セクションのサイズと、グループ分けされてグループ格納領域に格納された後の全セクションがメモリ上に占めるサイズの割合に応じた値である。グループ分けする際、グループ格納領域に隙間が生じるなどによって、グループ分けされた後の全セクションがメモリ上に占めるサイズは、もとの全セクションのサイズよりも大きくなっている。膨張率は、最適化によってグループ化された全セクションのサイズをどの程度許容するかを示す値として設定される。また、直接制限される最大サイズを設定することもできる。
[ステップS62] 先頭グループから順に、グループ格納領域に隙間があるかどうかを探す。
[ステップS63] 隙間のあるグループ格納領域があるかどうかを判定する。ない場合、処理を終了する。
[ステップS64] 隙間のサイズに見合ったセクションを末端(最後尾)のセクションから順に検索する。
[ステップS65] 隙間のサイズに対応するセクションがあるかどうかを判定する。対応するセクションがない場合は、保留とし、隙間をあけたままステップS62に戻って、次のグループの隙間の検索からの処理を行う。
[ステップS66] 対応するセクションがあった場合、このセクションをグループ格納領域の隙間に埋める。これにより、このセクションのサイズ分のメモリ領域が、全セクションが占めるメモリサイズから減算される。
[ステップS67] ステップS66による隙間埋め込み処理によって、減算された全セクションが占めるメモリサイズと最大サイズが比較される。また、比較は、減算された全セクションが占めるメモリサイズの膨張率と設定された膨張率で行ってもよい。そして、今回の隙間埋め処理によって、最大サイズもしくは膨張率が設定を満足したかどうかを判定する。設定が満足された場合は、処理を終了する。設定が満足されなかった場合は、ステップS62に戻って、次のグループからの処理を行う。
以上の処理手順は、最終的に指定の膨張率または最大サイズが満たされるまで、すべてのグループの隙間について処理が行われる。このように、グループ格納領域の隙間にグループ分けされないセクションを埋め込むことによって、アルゴリズムによって配列された順序を保持しながら、全セクションを格納するメモリサイズを最適化することができる。特に、ROMなどのようにプログラムセクション領域が有限なプログラム実行環境において有効である。
具体例を用いて第1の実施の形態の動作を説明する。図6は、プロファイル部による性能評価結果の一例を示した図である。
図の例では、セクション名「a」、「b」、「c」、「d」、「e」、「f」の6つのセクションについて、それぞれの占有率、参照頻度を算出している。占有率は、実行された処理全体のうち、このセクションが実行されていた割合を示している。たとえば、全体の実行時間のうち、このセクションが実行されていた時間などで計測する。参照頻度は、所定の時間内に他のセクションから参照される回数を計測した値である。図の例では、セクション「a」は、占有率0.1%で参照頻度は1回である。また、セクション「b」は占有率2%で参照回数は15回、セクション「c」は占有率80%で参照回数は10000回、セクション「d」は占有率10%で参照回数は300回、セクション「e」は占有率8%で参照回数は10回およびセクション「f」は占有率0%で参照回数は0回である。
このような性能評価に基づくグループ分けのアルゴリズムは、任意に設定される。たとえば、占有率の多い順にセクションを順序付けるアルゴリズムであれば、セクションは、「c」、「d」、「e」、「b」、「a」、「f」の順に順序付けられる。また、参照頻度の大きい順にセクションを順序付けるアルゴリズムであれば、「c」、「d」、「b」、「e」、「a」、「f」の順に順序付けられる。ここでは、占有率の多い順に順序付けるとともに、占有率が1%未満のセクションについてはグループ分けしないというアルゴリズムを設定するとする。
このようなアルゴリズムに従って、セクションが順序付けされ、各グループにグループ分けされる。グループ分けの後には、セクションをグループの隙間に埋め込む処理が行われる。図7は、第1の実施の形態におけるグループ分け後とレイアウト最適化後のグループ構成の一例を示した図である。
グループ分け後の構成は、グループ1(210)、グループ2(220)の2つのグループと、グループ分けされていないセクション「a」230とセクション「f」240が順に格納されている。グループ1(210)には、最も占有率の高いセクション「c」211と、次に占有率の高いセクション「d」212が順に配置され、隙間領域213ができている。グループ2(220)には、3番目に占有率の高いセクション「e」221、4番目に占有率の高いセクション「b」222が順に配置され、隙間領域223が生じている。グループ分けが終了した時点では、セクションが格納される全メモリのサイズは、グループ格納領域サイズ(キャッシュサイズ)×2にセクション「a」230とセクション「f」240のサイズを加えたサイズである。
レイアウト最適化処理では、グループ1(210)の隙間領域213と末端のセクション「f」240のサイズを比較し、セクション「f」240が隙間領域213に収まればここへ埋め込む。ここでは、サイズ内に収まるとし、セクション「f」240がグループ1(210)のセクション「d」212の次に配置される。この処理で、セクションが格納される全メモリのサイズは、セクション「f」240のサイズ分が減算される。また、末端のセクションは、セクション「a」230になる。
続いて、隙間が検索され、グループ2(220)の隙間領域223が検索される。そして、グループ2(220)の隙間領域223と現時の末端のセクション「a」230のサイズを比較し、セクション「a」230が隙間領域223に収まればここへ埋め込む。ここでは、サイズ内に収まるとし、セクション「a」230がグループ2(220)のセクション「b」222の次に配置される。この処理で、セクションが格納される全メモリのサイズは、さらに、セクション「a」230のサイズ分が減算され、図の例では、グループ格納領域サイズ(キャッシュサイズ)×2になる。
このように、第1の実施の形態では、アルゴリズムによってグループ化され、グループ内で順序付けされた順番を保ちながら、占有率の低いセクションをグループ格納領域の隙間に埋めることで、キャッシュミスの発生確率を抑えたまま、メモリ領域を節約することができる。また、この手法は、所定のアルゴリズムによって設定された順序付けに基づいて最適化を行うため、どのようなアルゴリズムによってグループ分けと順序付けがされたセクションであっても、また、プログラムの性質に依存することなく最適化を行うことができる。
[第2の実施の形態]
第2の実施の形態は、第1の実施の形態のグループ分け処理の「隙間埋め処理」をグループの配列を交互に逆順にする「反転アルゴリズム処理」にしたものである。グループ分け処理自体は、第1の実施の形態の場合と同じであるので、説明は省略する。
図8は、第2の実施の形態の反転アルゴリズム処理の手順を示したフローチャートである。グループ分けが終了した時点で、各グループは、アルゴリズムに基づく順序付けに従ってセクションが配置されている。たとえば、参照頻度の高い順、あるいは、占有率の高い順に並べられている。
[ステップS81] グループを先頭から検索する。すなわち、グループ1から処理を開始させる。
[ステップS82] グループ番号が偶数であるかどうかを判定する。偶数でない場合は、処理をステップS84へ進める。
[ステップS83] グループ番号が偶数であった場合、グループ内のセクションの先頭/終了アドレスをシンメトリックに反転する。すなわち、アルゴリズムに従って最も上位(先頭アドレス)に配置されたセクションを最も下位(終了アドレス)に移す。順番に従ってセクションを移動させていき、最終的には、アルゴリズムの順序付けとは逆順に並び替える。たとえば、アルゴリズムが参照頻度の高い順であれば、参照頻度の低い順に上位から配置される。すなわち、アルゴリズムが反転されている。しかしながら、アルゴリズム本来の主題である参照頻度に従った順序を付けるということは満たされている。
[ステップS84] 次のグループ番号を検索する。
[ステップS85] 次のグループがあるかどうかが判定され、なければ処理を終了する。次のグループがあれば、ステップS82に戻って処理を繰り返す。
以上の処理手順が実行されることにより、偶数番号のグループ番号を持つグループのセクションが逆順に並び替えられる。たとえば、参照頻度が高い順に順序付けられているとすると、どのグループも上部に存在するセクションがアクセスされる可能性が高くなる。このため、上部では、キャッシュ・コンフリクトが発生しやすくなる。そこで、奇数番のグループを占有率が高い順に並べ、偶数番のグループをその反対の参照頻度が低い順に並べれば、キャッシュ・コンフリクトを緩和させることができる。
なお、上記の説明では、偶数番号のグループのセクション配置を反転させるとしたが、奇数番号のグループのセクションの配置を反転させるとしても同様の効果が得られる。
具体例を用いて説明する。図9は、第2の実施の形態におけるグループ分け後とレイアウト最適化後のグループ構成の一例を示した図である。
グループ分け後の状態では、グループ1(310)、グループ2(320)、グループ3(330)、グループ4(340)の4つのグループが設けられている。それぞれのグループは、たとえば、参照頻度の高い順に1、2、3、4、5と配置されている。もちろん、占有率の高い順であってもよい。図の例では、グループ1(310)は、参照頻度の高い順にa1(311)、a2(312)、a3(313)、a4(314)が並べられている。同様に、参照頻度の高い順に、グループ2(320)は、b1(321)、b2(322)、b3(323)、b4(324)、b5(325)と配置され、グループ3(330)は、c1(331)、c2(332)、c3(333)と配置され、グループ4(340)は、d1(341)、d2(342)、d3(343)、d4(344)と配置される。すなわち、それぞれ「1」が占める上部は参照頻度が高く、下部は参照頻度が低い。このため、この状態では、上部ほど参照される回数が多く、キャッシュ・コンフリクトが発生しやすくなる。
そこで、レイアウト最適化処理では、偶数番のグループ2(320)とグループ4(340)のセクションを逆順に再配置する。図の例では、グループ2(320)は、b1(321)、b2(322)、b3(323)、b4(324)、b5(325)の順番が、b5(325)、b4(324)、b3(323)、b2(322)、b1(321)の順に再配置される。同様に、グループ4(340)は、d1(341)、d2(342)、d3(343)、d4(344)の順番が、d4(344)、d3(343)、d2(342)、d1(341)の順に再配置される。
図10は、第2の実施の形態のレイアウト最適化処理後のグループの参照回数頻度の一例を示した図である。図9と同じものには同じ番号を付す。図の参照頻度は、値が右へ行くほど参照頻度が高くなる。
図から明らかなように、グループ1(310)、グループ3(330)は、参照頻度の高い順に配置されており、下部になるほど参照頻度が低くなる。一方、グループ2(32)、グループ4(340)は、逆順、すなわち、参照頻度の低い順に配置されており、下部になるほど参照頻度が高くなる。このように、参照頻度のパターンを反転させることで、キャッシュ・コンフリクトを緩和することが可能となる。
ところで、第1の実施の形態と第2の実施の形態を別々に説明したが、どちらもアルゴリズム基づく順序付けは保持されているので、両方のレイアウト最適化処理を実行することもできる。たとえば、第1の実施の形態によってメモリサイズを抑えた後、さらに、偶数もしくは奇数のグループの配置順を逆順にする。
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、レイアウト処理装置が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープなどがある。光ディスクには、DVD(Digital Versatile Disc)、DVD−RAM(Random Access Memory)、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。光磁気記録媒体には、MO(Magneto-Optical disk)などがある。
プログラムを流通させる場合には、たとえば、そのプログラムが記録されたDVD、CD−ROMなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
プログラムを実行するコンピュータは、たとえば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
実施の形態に適用される発明の概念図である。 プログラムセクションレイアウト方法が適用されるシステム構成の一例を示した概略図である。 本実施の形態のレイアウト処理装置のハードウェア構成例を示すブロック図である。 第1の実施の形態のグループ分け処理手順を示したフローチャートである。 第1の実施の形態の隙間埋め処理の手順を示したフローチャートである。 プロファイル部による性能評価結果の一例を示した図である。 第1の実施の形態におけるグループ分け後とレイアウト最適化後のグループ構成の一例を示した図である。 第2の実施の形態の反転アルゴリズム処理の手順を示したフローチャートである。 第2の実施の形態におけるグループ分け後とレイアウト最適化後のグループ構成の一例を示した図である。 第2の実施の形態のレイアウト最適化処理後のグループの参照回数頻度の一例を示した図である。
符号の説明
1 グループ分け手段
2 レイアウト最適化手段
10 コンパイラ/アセンブラ部
20 リンカ部
30 プロファイル部

Claims (9)

  1. プログラム実行時に一部のプログラムセクションをキャッシュメモリに格納して動作するコンピュータのプログラムセクションレイアウト方法において、
    前記コンピュータが、
    任意の処理機能の実行単位である複数のプログラムセクションを所定のアルゴリズムに基づく条件を満たす複数の第1プログラムセクションと前記所定のアルゴリズムに基づく条件を満たさない第2プログラムセクションとに分けるとともに前記所定のアルゴリズムに従って前記複数の第1プログラムセクションを順序付けし、
    プログラム格納領域をキャッシュメモリサイズに分割した複数のセクショングループ格納領域の一のセクショングループ格納領域に一の第1プログラムセクションを配置できる場合には前記一のセクショングループ格納領域に前記一の第1プログラムセクションを配置し、前記一の第1プログラムセクションを配置できない場合には前記一のセクショングループ格納領域に空き領域を残して次のセクショングループ格納領域に前記一の第1プログラムセクションを配置して、前記複数の第1プログラムセクションを前記順序どおりに前記複数のセクショングループ格納領域に配置し、
    前記空き領域に前記第2プログラムセクションを配置できる場合には前記第2プログラムセクションを前記空き領域に配置し、前記第2プログラムセクションを配置できない場合には次の配置可能な空き領域に前記第2プログラムセクションを配置し、
    前記第1のプログラムセクションが配置された前記セクショングループ格納領域と前記空き領域に前記第2プログラムセクションを配置する前の前記第2プログラムセクションとがメモリ上に占める第1メモリサイズから前記空き領域に配置された前記第2プログラムセクションがメモリ上に占める第2メモリサイズを減算したメモリサイズが所定メモリサイズ以下である場合には前記第2プログラムセクションの配置を終了する、
    ことを特徴とするプログラムセクションレイアウト方法。
  2. プログラム実行時に一部のプログラムセクションをキャッシュメモリに格納して動作するコンピュータのプログラムセクションレイアウト方法において、
    前記コンピュータが、
    任意の処理機能の実行単位である複数のプログラムセクションを所定のアルゴリズムに基づく条件を満たす複数の第1プログラムセクションと前記所定のアルゴリズムに基づく条件を満たさない第2プログラムセクションとに分けるとともに前記所定のアルゴリズムに従って前記複数の第1プログラムセクションを順序付けし、
    プログラム格納領域をキャッシュメモリサイズに分割した複数のセクショングループ格納領域の一のセクショングループ格納領域に一の第1プログラムセクションを配置できる場合には前記一のセクショングループ格納領域に前記一の第1プログラムセクションを配置し、前記一の第1プログラムセクションを配置できない場合には前記一のセクショングループ格納領域に空き領域を残して次のセクショングループ格納領域に前記一の第1プログラムセクションを配置して、前記複数の第1プログラムセクションを前記順序どおりに前記複数のセクショングループ格納領域に配置し、
    前記空き領域に前記第2プログラムセクションを配置できる場合には前記第2プログラムセクションを前記空き領域に配置し、前記第2プログラムセクションを配置できない場合には次の配置可能な空き領域に前記第2プログラムセクションを配置し、
    前記第1のプログラムセクションが配置された前記セクショングループ格納領域と前記空き領域に前記第2プログラムセクションを配置する前の前記第2プログラムセクションとがメモリ上に占める第1メモリサイズから前記空き領域に配置された前記第2プログラムセクションがメモリ上に占める第2メモリサイズを減算した第1サイズと、前記複数の第1プログラムセクションのサイズと前記複数の第2プログラムセクションのサイズを加えた第2サイズとの割合を示す膨張率が所定膨張率以下である場合には前記第2プログラムセクションの配置を終了する、
    ことを特徴とするプログラムセクションレイアウト方法。
  3. 最後尾に配置されている前記第2プログラムセクションから順に配置される、
    ことを特徴とする請求項1または2記載のプログラムセクションレイアウト方法。
  4. プログラム実行時に一部のプログラムセクションをキャッシュメモリに格納して動作するコンピュータのプログラムセクションレイアウト方法において、
    前記コンピュータが、
    任意の処理機能の実行単位であるプログラムセクションのうち所定のアルゴリズムに基づく条件を満たす前記プログラムセクションを順序付けし、前記所定のアルゴリズムによって順序付けがされた前記プログラムセクションを、プログラム格納領域をキャッシュメモリサイズ単位に分割したセクショングループ格納領域の空き領域に前記順序に従って配置し、前記プログラムセクションをセクショングループにグループ分けするグループ分け手順と、
    前記セクショングループを構成する前記プログラムセクションの配置関係を保持したまま、前記所定のアルゴリズムによって順序付けがされなかったプログラムセクションを前記セクショングループ格納領域の空き領域に配置し、前記セクショングループを配列順序に従って奇数番号グループと偶数番号グループとに分け、前記奇数番号グループもしくは前記偶数番号グループのいずれかの前記セクショングループを構成する前記プログラムセクションの配列順を逆順にして配置し、キャッシュコンフリクトを緩和するプログラムセクションのレイアウトを生成することでレイアウトを最適化するレイアウト最適化手順と、
    を実行することを特徴とするプログラムセクションレイアウト方法。
  5. 前記所定のアルゴリズムは、実行される処理全体に対して前記プログラムセクションが実行される割合を示す占有率に基づいて前記順序を決定することを含み、
    前記所定のアルゴリズムに基づく条件は、前記プログラムセクションの占有率が所定占有率よりも大きいことを含むこと、
    を特徴とする請求項1、2、3または4に記載のプログラムセクションレイアウト方法。
  6. 前記所定のアルゴリズムは、所定時間内に前記プログラムセクションが他のプログラムセクションから参照される回数を示す参照頻度に基づいて前記順序を決定することを含み、
    前記所定のアルゴリズムに基づく条件は、前記プログラムセクションの参照頻度が所定参照頻度よりも大きいことを含むこと、
    を特徴とする請求項1、2、3または4に記載のプログラムセクションレイアウト方法。
  7. プログラム実行時に一部のプログラムセクションをキャッシュメモリに格納して動作するコンピュータのプログラムセクションのレイアウト処理を実行させるレイアウト処理プログラムにおいて、
    前記コンピュータに、
    任意の処理機能の実行単位である複数のプログラムセクションを所定のアルゴリズムに基づく条件を満たす複数の第1プログラムセクションと前記所定のアルゴリズムに基づく条件を満たさない第2プログラムセクションとに分けるとともに前記所定のアルゴリズムに従って前記複数の第1プログラムセクションを順序付けし、
    プログラム格納領域をキャッシュメモリサイズに分割した複数のセクショングループ格納領域の一のセクショングループ格納領域に一の第1プログラムセクションを配置できる場合には前記一のセクショングループ格納領域に前記一の第1プログラムセクションを配置し、前記一の第1プログラムセクションを配置できない場合には前記一のセクショングループ格納領域に空き領域を残して次のセクショングループ格納領域に前記一の第1プログラムセクションを配置して、前記複数の第1プログラムセクションを前記順序どおりに前記複数のセクショングループ格納領域に配置し、
    前記空き領域に前記第2プログラムセクションを配置できる場合には前記第2プログラムセクションを前記空き領域に配置し、前記第2プログラムセクションを配置できない場合には次の配置可能な空き領域に前記第2プログラムセクションを配置し、
    前記第1のプログラムセクションが配置された前記セクショングループ格納領域と前記空き領域に前記第2プログラムセクションを配置する前の前記第2プログラムセクションとがメモリ上に占める第1メモリサイズから前記空き領域に配置された前記第2プログラムセクションがメモリ上に占める第2メモリサイズを減算したメモリサイズが所定メモリサイズ以下である場合には前記第2プログラムセクションの配置を終了する、
    手順を実行させることを特徴とするレイアウト処理プログラム。
  8. プログラム実行時に一部のプログラムセクションをキャッシュメモリに格納して動作するコンピュータのプログラムセクションのレイアウト処理を実行させるレイアウト処理プログラムにおいて、
    前記コンピュータに、
    任意の処理機能の実行単位であるプログラムセクションのうち所定のアルゴリズムに基づく条件を満たす前記プログラムセクションを順序付けし、前記所定のアルゴリズムによって順序付けがされた前記プログラムセクションを、プログラム格納領域をキャッシュメモリサイズ単位に分割したセクショングループ格納領域の空き領域に前記順序に従って配置し、前記プログラムセクションをセクショングループにグループ分けするグループ分け手順と、
    前記セクショングループを構成する前記プログラムセクションの配置関係を保持したまま、前記所定のアルゴリズムによって順序付けがされなかったプログラムセクションを前記セクショングループ格納領域の空き領域に配置し、前記セクショングループを配列順序に従って奇数番号グループと偶数番号グループとに分け、前記奇数番号グループもしくは前記偶数番号グループのいずれかの前記セクショングループを構成する前記プログラムセクションの配列順を逆順にして配置し、キャッシュコンフリクトを緩和するプログラムセクションのレイアウトを生成することでレイアウトを最適化するレイアウト最適化手順と、
    を実行させることを特徴とするレイアウト処理プログラム。
  9. プログラム実行時に一部のプログラムセクションをキャッシュメモリに格納して動作するコンピュータのプログラムセクションのレイアウト処理を実行させるレイアウト処理プログラムを記録したコンピュータ読み取り可能な記録媒体において、
    任意の処理機能の実行単位である複数のプログラムセクションを所定のアルゴリズムに基づく条件を満たす複数の第1プログラムセクションと前記所定のアルゴリズムに基づく条件を満たさない第2プログラムセクションとに分けるとともに前記所定のアルゴリズムに従って前記複数の第1プログラムセクションを順序付けし、
    プログラム格納領域をキャッシュメモリサイズに分割した複数のセクショングループ格納領域の一のセクショングループ格納領域に一の第1プログラムセクションを配置できる場合には前記一のセクショングループ格納領域に前記一の第1プログラムセクションを配置し、前記一の第1プログラムセクションを配置できない場合には前記一のセクショングループ格納領域に空き領域を残して次のセクショングループ格納領域に前記一の第1プログラムセクションを配置して、前記複数の第1プログラムセクションを前記順序どおりに前記複数のセクショングループ格納領域に配置し、
    前記空き領域に前記第2プログラムセクションを配置できる場合には前記第2プログラムセクションを前記空き領域に配置し、前記第2プログラムセクションを配置できない場合には次の配置可能な空き領域に前記第2プログラムセクションを配置し、
    前記第1のプログラムセクションが配置された前記セクショングループ格納領域と前記空き領域に前記第2プログラムセクションを配置する前の前記第2プログラムセクションとがメモリ上に占める第1メモリサイズから前記空き領域に配置された前記第2プログラムセクションがメモリ上に占める第2メモリサイズを減算したメモリサイズが所定メモリサイズ以下である場合には前記第2プログラムセクションの配置を終了する、
    手順をコンピュータに実行させるレイアウト処理プログラムを記録したコンピュータ読み取り可能な記録媒体。
JP2004262490A 2004-09-09 2004-09-09 プログラムセクションレイアウト方法およびレイアウト処理プログラム Active JP4592367B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2004262490A JP4592367B2 (ja) 2004-09-09 2004-09-09 プログラムセクションレイアウト方法およびレイアウト処理プログラム
US11/019,195 US7970997B2 (en) 2004-09-09 2004-12-23 Program section layout method and layout program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004262490A JP4592367B2 (ja) 2004-09-09 2004-09-09 プログラムセクションレイアウト方法およびレイアウト処理プログラム

Publications (2)

Publication Number Publication Date
JP2006079338A JP2006079338A (ja) 2006-03-23
JP4592367B2 true JP4592367B2 (ja) 2010-12-01

Family

ID=35997599

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004262490A Active JP4592367B2 (ja) 2004-09-09 2004-09-09 プログラムセクションレイアウト方法およびレイアウト処理プログラム

Country Status (2)

Country Link
US (1) US7970997B2 (ja)
JP (1) JP4592367B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101574893B1 (ko) 2014-05-16 2015-12-04 광운대학교 산학협력단 비휘발성 메모리를 이용한 웹 페이지의 레이아웃 캐싱 장치 및 방법

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8010956B1 (en) * 2005-01-28 2011-08-30 Oracle America, Inc. Control transfer table structuring
JP5244421B2 (ja) * 2008-02-29 2013-07-24 株式会社ソニー・コンピュータエンタテインメント 情報処理装置およびプログラム分割方法
US8473680B1 (en) * 2009-09-18 2013-06-25 Marvell International Ltd. Hotspot detection and caching for storage devices
US9003124B2 (en) 2011-12-13 2015-04-07 International Business Machines Corporation Managing a region cache
RU2012127578A (ru) * 2012-07-02 2014-01-10 ЭлЭсАй Корпорейшн Анализатор применимости программного модуля для разработки и тестирования программного обеспечения для многопроцессорных сред
CN105247482B (zh) * 2013-06-28 2019-10-22 三星电子株式会社 更新应用的方法和装置
CN109144944A (zh) * 2018-07-31 2019-01-04 佛山科学技术学院 一种并发性能最优的程序组带宽调度方法
JP7367365B2 (ja) * 2019-07-23 2023-10-24 富士通株式会社 タスク実行管理装置、タスク実行管理方法、および、タスク実行管理プログラム

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06214803A (ja) * 1993-01-18 1994-08-05 Nec Corp 仮想空間ブロック配置方式
JPH10124327A (ja) * 1996-10-16 1998-05-15 Nec Corp インストラクションキャッシュミス率削減方法
JPH10187460A (ja) * 1996-10-28 1998-07-21 Fujitsu Ltd バイナリ・プログラム変換装置および方法
JP2000003268A (ja) * 1998-06-11 2000-01-07 Mitsubishi Electric Corp メモリマップ最適化決定方法
JP2000066899A (ja) * 1998-08-19 2000-03-03 Nec Corp 実行オブジェクト最適化装置
JP2003271394A (ja) * 2002-03-19 2003-09-26 Nec Electronics Corp 関数と基本ブロックの配置割付装置および割付最適化プログラム

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000038054A1 (fr) * 1998-12-22 2000-06-29 Fujitsu Limited Appareil et procede de generation d'objet d'optimisation
US6996676B2 (en) * 2002-11-14 2006-02-07 International Business Machines Corporation System and method for implementing an adaptive replacement cache policy

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06214803A (ja) * 1993-01-18 1994-08-05 Nec Corp 仮想空間ブロック配置方式
JPH10124327A (ja) * 1996-10-16 1998-05-15 Nec Corp インストラクションキャッシュミス率削減方法
JPH10187460A (ja) * 1996-10-28 1998-07-21 Fujitsu Ltd バイナリ・プログラム変換装置および方法
JP2000003268A (ja) * 1998-06-11 2000-01-07 Mitsubishi Electric Corp メモリマップ最適化決定方法
JP2000066899A (ja) * 1998-08-19 2000-03-03 Nec Corp 実行オブジェクト最適化装置
JP2003271394A (ja) * 2002-03-19 2003-09-26 Nec Electronics Corp 関数と基本ブロックの配置割付装置および割付最適化プログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101574893B1 (ko) 2014-05-16 2015-12-04 광운대학교 산학협력단 비휘발성 메모리를 이용한 웹 페이지의 레이아웃 캐싱 장치 및 방법

Also Published As

Publication number Publication date
US20060053416A1 (en) 2006-03-09
US7970997B2 (en) 2011-06-28
JP2006079338A (ja) 2006-03-23

Similar Documents

Publication Publication Date Title
US5349656A (en) Task scheduling method in a multiprocessor system where task selection is determined by processor identification and evaluation information
CN102870089B (zh) 将数据存储到虚拟高速存储系统中的系统和方法
US9256448B2 (en) Process grouping for improved cache and memory affinity
KR101366075B1 (ko) 멀티코어 플랫폼에서의 태스크 이동 방법 및 장치
JP5516744B2 (ja) スケジューラ、マルチコアプロセッサシステムおよびスケジューリング方法
JP4429780B2 (ja) 記憶制御装置、制御方法、および制御プログラム。
US5963972A (en) Memory architecture dependent program mapping
JP2007108981A (ja) ストレージ装置及びボリューム間のデータ交換方法
JP2000506659A (ja) マルチプロセッサデータ処理システム内でメモリを割り当てる方法
JP5874811B2 (ja) 情報処理方法、プログラム、および情報処理装置
CN108228482B (zh) 用于管理存储系统中的缓存设备的方法和系统
WO2010116431A1 (ja) キャッシュ制御装置及びキャッシュ制御方法
JP2007026094A (ja) 実行装置およびアプリケーションプログラム
JP4592367B2 (ja) プログラムセクションレイアウト方法およびレイアウト処理プログラム
JP3872968B2 (ja) コンピュータ・システムにおいてメモリを動的に再割当てするシステムおよび方法
JP2000163288A (ja) データ記憶システム、データ再配置方法及び記録媒体
JP2007188523A (ja) タスク実行方法およびマルチプロセッサシステム
US8510529B2 (en) Method for generating program and method for operating system
JP2016115213A (ja) 情報処理装置、データ処理方法、およびデータ処理プログラム
JP2001282617A (ja) 共有されたキャッシュを動的に区分するための方法及びシステム
JP6194875B2 (ja) キャッシュ装置、キャッシュシステム、キャッシュ方法、及びキャッシュプログラム
JP5737298B2 (ja) スケジューリング方法およびスケジューリングシステム
JP3850599B2 (ja) 並列画像処理装置及び並列画像処理方法
JP2004070439A (ja) データの記憶領域への配置を決定するコンパイラ装置及び配置決定方法
CN114661557A (zh) 记录内存冷热状态的方法和装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060222

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080624

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20080729

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090414

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090615

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100216

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100419

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: 20100914

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100914

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130924

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4592367

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350