JP2010003031A - コンパイル処理装置,ならびにアクセスパターン変更処理方法および処理プログラム - Google Patents

コンパイル処理装置,ならびにアクセスパターン変更処理方法および処理プログラム Download PDF

Info

Publication number
JP2010003031A
JP2010003031A JP2008160024A JP2008160024A JP2010003031A JP 2010003031 A JP2010003031 A JP 2010003031A JP 2008160024 A JP2008160024 A JP 2008160024A JP 2008160024 A JP2008160024 A JP 2008160024A JP 2010003031 A JP2010003031 A JP 2010003031A
Authority
JP
Japan
Prior art keywords
access
access pattern
processing
elements
array
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.)
Granted
Application number
JP2008160024A
Other languages
English (en)
Other versions
JP5146134B2 (ja
Inventor
Tomoko Shoji
智子 庄司
Kotaro Taki
康太郎 瀧
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 Ltd
Original Assignee
Fujitsu 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 Ltd filed Critical Fujitsu Ltd
Priority to JP2008160024A priority Critical patent/JP5146134B2/ja
Publication of JP2010003031A publication Critical patent/JP2010003031A/ja
Application granted granted Critical
Publication of JP5146134B2 publication Critical patent/JP5146134B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

【課題】 コンパイルまたはリンク時に,メモリアクセスする命令の構造体のアクセスパターンから,該構造体の要素の配列上の配置を変更できるようにする。
【解決手段】 コンパイル処理装置1のコンパイル処理手段11またはリンク手段12の処理の際に,アクセスパターン取得部13が,入力プログラムの解析結果からメモリアクセスする命令を解析し,構造体要素の配列上の配置,アクセス回数,アクセス順序を含むアクセスパターンを取得する。アクセスパターン変更部14が,アクセスパターンに基づいて,構造体の要素の配列上の配置を変更する。
【選択図】 図1

Description

本発明は,プログラムのコンパイル処理装置,ならびにアクセスパターン変更処理方法および処理プログラムに関するものである。より詳しくは,本発明は,プログラムのコンパイル処理またはリンク処理時に実行され,プログラムの動的データ構造の解析結果を用いてメモリアクセスを伴う構造体のアクセスパターンを取得し,該構造体の要素の配列上の位置を変更する処理を実現する処理に関する。
プログラムのコンパイル処理やリンク処理における,配列要素の割り当て処理に関する従来技術として,ソースプログラム内の配列要素の参照順序と参照回数とを保持し,配列要素のインデックスを参照順序に合わせて入れ替え,連続領域になるように割り当てる方法が知られている(例えば,特許文献1参照)。
また,プログラムを一度予備的に実行し,プログラム内の配列要素へのアクセスパターンのグラフを作成し,アクセス数の大きい配列要素を活性化レコードの基底アドレスに近い位置に配置させ,または,アクセスが時間的に接近している複数の配列要素を同一キャッシュライン上に割り付ける方法が知られている(例えば,特許文献2参照)。
また,プログラム実行時にディスク・アクセスを監視し,アクセス回数の多いアドレス・ブロックをキャッシュメモリに常駐させる方法が知られている(例えば,特許文献3参照)。
キャッシュメモリ(キャッシュ)は,記憶装置の中で最も高速な記憶装置であり,使用頻度の高いデータを記憶させることで,データの読み込みを最適化することができる。
特開平4−7748号公報 特開平9−212369号公報 特公平7−101402号公報
プログラムコンパイル処理装置において,例えば,図15(A)に示すFortran言語によって記述されたプログラム例のように,構造体へのポインタを要素(child1,child2)に持つ構造体へアクセスする場合を考える。
このときに,構造体(struct)は,構造体の型が定義された入力プログラム[struct]ではなく,別の入力プログラム[main.f90]中で参照されるとする。図15(B)に示すように,構造体(struct)は,配列(parent)のn個分の要素としてアロケートされる。また,配列の要素となる構造体(struct)は,それぞれ,異なる構造体へのポインタを要素として持ち,定義された順に先頭の要素から順に参照するものとする。
図15(B)は,構造体(struct)が割り当てられた配列(parent)例を示す図である。図15(B)に示す配列の横一列の矩形の連なりは,一つの構造体を表す。各矩形は,構造体が持つ成分(構造体要素)が割り当てられる領域を表す。
この配列(parent)では,n個の構造体の各構造体要素child1,child2,num1の領域が,「child1_1,child2_1,num1_1,child1_2,child2_2,num1_2,…」という順序で確保される。
ここで,図15(A)のプログラム[main.f90]で,構造体要素child1の領域「child1_1,child1_2,child1_3,…,child1_n」を連続的にアクセスしようとする。
図15(B)の配列では,構造体要素child1が連続する領域に確保されていないことから,構造体要素child1の領域が1次キャッシュにキャッシュされない可能性がある。
このように,配列上で,連続アクセスする構造体要素が連続領域として確保されない場合には,同時にキャッシュされない状態が生じうる。そのため,キャッシュメモリの使用効率を低下させるだけでなく,プログラムの実行性能を低下させる。
本発明の目的は,かかる問題に鑑みてなされたものであり,その目的は,プログラムのコンパイル処理またはリンク処理の際に,プログラムの動的データ構造を解析し,メモリアクセスを行う命令の構造体へのアクセスパターンを取得し,このアクセスパターンに基づいて,該構造体の要素を割り付ける配置を変更できるようにするプログラムコンパイル処理装置を提供することである。
また,本発明の別の目的は,前記プログラムコンパイル処理装置が実行するアクセスパターン変更処理方法,および,コンピュータを前記該アクセスパターン変更処理方法によって実行される処理の処理手段を備える処理装置として機能させるためのアクセスパターン変更処理プログラムを提供することである。
開示する処理装置は,プログラムのコンパイル処理またはリンク処理を行うコンパイル処理装置であって,入力されたプログラムの解析結果から,メモリアクセスする命令のアクセス動作を解析し,命令に関連する構造体の要素各々の配列上の配置,アクセス回数およびアクセス順序を含むアクセスパターンを取得するアクセスパターン取得部と,このアクセスパターンに基づいて,構造体の要素の配列上の配置を変更するアクセスパターン変更部とを備える。
アクセスパターン変更部は,アクセスパターンのアクセス順序に基づいて,アクセスする構造体の要素を,配列の先頭から連続する領域に割り付けることができる。これにより,連続してアクセスする構造体要素の領域が一次キャッシュに同時にキャッシュされる可能性がより高くなり,キャッシュメモリの使用効率が向上し,プログラムの実行性能も向上する。
また,アクセスパターン変更部は,アクセスパターンのアクセス回数に基づいて,アクセス回数の高い構造体の要素を,配列の先頭の領域から優先して割り付けることができる。これにより,高頻度でアクセスされる構造体要素が優先的に一次キャッシュにキャッシュされる可能性がより高くなる。よって,キャッシュメモリの使用効率が向上し,プログラムの実行性能も向上する。
開示する処理装置によれば,アクセス順序やアクセス回数に基づいて,アクセスする構造体の要素が一次キャッシュ上に同時にキャッシュされる可能性がきわめて高くなるため,キャッシュメモリの使用効率,ひいてはプログラムの実行性能の向上を図ることができる。
図1は,本発明の実施の形態における構成例を示す図である。
コンパイル処理装置1は,コンパイル処理手段11,リンク手段12,アクセスパターン取得部13およびアクセスパターン変更部14を備える。
コンパイル処理手段11は,ソース解析部111,最適化部113,およびコード生成部115を備え,ソースプログラムのコンパイル処理を行い,オブジェクトファイルを生成する。ソース解析部111,最適化部113,およびコード生成部115は既知手法による処理を実行するものであり,各処理の説明を省略する。
リンク手段12は,コンパイル処理手段11が生成したオブジェクトファイルのリンク処理を行い,実行ファイルを生成する。
アクセスパターン取得部13は,入力されたプログラムの解析結果から,メモリアクセスする命令のアクセス動作を解析し,この命令の構造体の要素(構造体要素)各々の配列上の配置,アクセス回数およびアクセス順序を含むアクセスパターンを取得する。
アクセスパターン変更部14は,アクセスパターンに基づいて,アクセスパターンの該構造体要素の配置を変更する。
アクセスパターン変更部14は,アクセスパターンのアクセス順序またはアクセス回数に基づいて,アクセスする構造体要素を,配列の先頭から連続する領域に割り付け,この割り付けに基づいてアクセスパターンの構造体要素の配置を変更する。
例えば,アクセスパターンのアクセス順序に基づいて,アクセスする構造体要素を,配列の先頭から連続する領域に割り付ける
または,アクセスパターンのアクセス回数に基づいて,アクセス回数の高い構造体要素を,前記配列の先頭の領域から優先して割り付ける。
または,構造体が関連する複数の関数内で,アクセスする構造体要素に偏りがある場合に,関数各々の処理内でアクセスする構造体要素のみを,配列の先頭から連続する領域に割り付け,その関数に関連する構造体の情報の同期処理を付加する。
または,構造体が関連するループ処理内で,アクセスする構造体要素に偏りがある場合に,そのループ処理内でのみ,アクセス回数が多い構造体要素を,配列の先頭から連続する領域に割り付ける。
アクセスパターン取得部13およびアクセスパターン変更部14は,コンパイル処理手段11またはリンク手段12と協働して処理を実行することができる。
以下に,コンパイル処理装置1におけるアクセスパターン取得処理および変更処理について,より詳細に説明する。以下の例では,アクセスパターン取得処理および変更処理が,リンク手段12の最適化処理の際に実行されるものとする。
〔第1の処理例〕
第1の処理例では,図15(A)に示すプログラムを処理対象とする。
アクセスパターン取得部13は,コンパイル処理手段11によって生成されたオブジェクトファイルの解析結果から,動的データ構造を解析し,メモリアクセスする命令を検出し,そのアクセス動作を解析してアクセスパターンを取得する。
図15(A)のプログラムの「parent(i)%child1%num1」がメモリアクセスを行う命令である。この命令のアクセス動作を解析し,図15(B)に示すように,構造体structの構造体要素child1,child2,num1の配列上の配置が,配列の先頭から何バイトの位置に割り付けられるかを特定する。さらに,各構造体のアクセス回数およびアクセス順序を解析する。これらの解析情報を,アクセスパターンとして取得する。
次に,アクセスパターン変更部14は,アクセスパターンのアクセス順序に基づいて,連続してアクセスする構造体要素が,配列の連続する領域に割り付けられるように,構造体要素の配置を変更する。
図2に,構造体要素の割り付け変更例を示す。
図2に示すように,まず,構造体structの構造体要素child1の「child1_1,child1_2,…,child1_n」の領域が,配列の先頭から順に連続的に割り付けられる。続けて,構造体要素child2の「child2_1,child2_2,…,child2_n」の領域,num1の「num1_1,num1_2,…,num1_n」の領域が,次の位置から連続的に割り付けられる。
リンク手段12では,領域の割り付け位置が変更されたアクセスパターンに基づいて最適化処理を行う。
これにより,アクセスが連続する構造体要素は,キャッシュの連続した領域に割り当てられ,一次キャッシュに同時にキャッシュされる可能性が高くなる。よって,キャッシュメモリの使用効率およびプログラムの実行性能を向上させることができる。
また,第1の処理例では,後述する処理例のように処理のオーバーヘッドを生ずるおそれがない。
〔第2の処理例〕
第2の処理例では,図3に示すプログラムを処理対象とする。
アクセスパターン取得部13は,第1の処理例と同様に,図15のプログラムについて,メモリアクセスする命令のアクセスパターンを取得する。
図3に示すプログラムでは,関数「call sub1()」内の「parent(i)%child1%num1」と,関数「call sub2()」内の「parent(i)%child2%num1」がメモリアクセスを行う命令である。
2つの関数において,命令に対応する同一の構造体structのアクセスパターンは異なる。
この場合には,各命令での構造体structのアクセスパターンを取得し,部分的に変更することによって,アクセスパターンを最適化できる。また,プログラム全体でのアクセス動作の解析が不要となる。
しかし,構造体が多重化するため,同期処理を行う必要がある。
アクセスパターン変更部14は,関数内で,構造体structの構造体要素のアクセスに偏りがあるかを調べる。
関数「call sub1()」での命令「parent(i)%child1%num1」では,構造体要素child1,num1のみアクセスし,構造体要素child2にはアクセスしないという偏りがある。同様に,関数「call sub1()」での命令「parent(i)%child2%num1」では,構造体要素child2,num1のみアクセスするという偏りがある。
そこで,アクセスパターン変更部14は,関数内で,アクセスする構造体要素のみを要素として定義する構造体を作成する。
図4は,図3のプログラムの命令「parent(i)%child1%num1」と「parent(i)%child2%num1」とにおける構造体要素の偏りに基づいて,構造体structが作成された状態を示す図である。
図4のプログラムの破線の矩形の部分p1に示すように,命令「parent(i)%child1%num1」に対応して,構造体要素child1,num1のみを要素とする構造体structの定義を作成している。また,破線の矩形の部分p2に示すように,命令「parent(i)%child2%num1」についても,同様に構造体structの定義を作成している。
アクセスパターン変更部14は,これらの関数内で,作成した構造体structのアクセスパターンに基づいて,その構造体要素のみについて配列上の領域の割り付けを行う。ここで,第1の処理例と同様の処理を行って配列上の配置の割り付けを変更する。
図5(A)および(B)は,それぞれ,命令「parent(i)%child1%num1」と命令「parent(i)%child2%num1」に対応する配列の構造体要素の割り付けの変更例を示す図である。
図5(A)の配列では,構造体要素child1,num1のみを参照するため,配列の要素として,構造体要素child1の「child1_1,child1_2,…,child1_n」の領域分と構造体要素num1の「num1_1,num1_2,…,num1_n」の領域分のみが割り付けられる。
また,図5(B)の配列では,構造体要素child2,num1のみを参照するため,配列の要素として,構造体要素child2の「child2_1,child2_2,…,child2_n」の領域分と構造体要素num1の「num1_1,num1_2,…,num1_n」の領域分のみが割り付けられる。
このように,定義されているがアクセスしない不要な構造体要素を除去したアクセスパターンに変更して,配列上の構造体要素の配置を変更することができるため,キャッシュメモリの無駄な領域の割り当てを止めることができる。
第2の処理例では,構造体structが多重化されるため,複数の構造体間で情報の同期をとる必要がある。
アクセスパターン変更部14は,本来の構造体structの構造体要素を配列として保持し,作成した構造体の構造体要素の値が変化した場合に,これらの情報の同期をとる。同期処理は,以下の3つのいずれかの処理方法で行われる。
図6は,第1の同期方法による同期処理例を示す図である。
アクセスパターン変更部14は,第1の同期方法として,マスタ構造体struct_masterAを生成し,マスタ構造体の情報を,多重化した構造体structA1,structA2の全てに写像する。マスタ構造体struct_masterAを介して各構造体の情報の同期をとることができる。
図7は,第2の同期方法による同期処理例を示す図である。
アクセスパターン変更部14は,第2の同期方法として,構造体の更新があったときに,更新された情報を,多重化した構造体各々に写像する。構造体structA1の情報が更新された場合に,更新された情報を構造体structA2,structA3,structA4,structA5にそれぞれ写像する。また,構造体structA2の情報が更新された場合に,更新された情報を構造体structA1,structA3,structA4,structA5にそれぞれ写像する。更新のたびに全ての構造体の情報が写像され,同期をとることができる。
図8は,第3の同期方法による同期処理例を示す図である。
アクセスパターン変更部14は,第3の同期方法として,更新が生じた構造体をマスタとして設定し,更新された情報を他の構造体へ順次写像する。
構造体structA1の情報が更新された場合に,構造体structA1をマスタと設定し,更新された情報を構造体structA2に写像する。次に,構造体structA2の情報が更新されるので,構造体structA2がマスタとなり,更新された情報を構造体structA3に写像する。さらに,構造体structA3の更新された情報が,同様にして,構造体structA4に写像される。
情報の更新を契機に,構造体の情報が次の構造体に写像され,全体の同期をとることができる。
〔第3の処理例〕
第3の処理例では,図15に示すプログラムを処理対象とする。
アクセスパターン取得部13は,第1の処理例と同様に,図15のプログラムについて,メモリアクセスする命令のアクセスパターンを取得する。
ループ処理内にある命令「parent(i)%child1%num1」では,対応する構造体の構造体要素child1,num1のみアクセスし,構造体要素child2へアクセスしていない。したがって,アクセスする構造体要素を配列上で優先的に割り当てることによって,最適化することができる。
アクセスパターン変更部14は,図15に示すプログラムでループ処理内にある命令「parent(i)%child1%num1」の構造体のアクセスパターンから,アクセスする順に構造体要素を並べ替えて,構造体要素child1,num1,child2とする。
さらに,アクセスパターン変更部14は,作業用構造体として,配列parentの作業用配列parent_tmpを作成し,アクセスパターンのアクセス回数に基づいて並べ替えた構造体要素の順に,その領域分を,配列の先頭から順に連続する領域に割り付ける。
図9は,図15(A)のプログラムにおいて,構造体要素が並べ替えられた構造体と,配列parentの作業用配列parent_tmpとを付加した状態例を示す図である。
作業用構造体parent_tmpでは,置き換えられた順序に従って,各構造体要素の領域分が割り付けられる。また,ループ処理の終了時には,作業用配列parent_tmpの情報が,配列parentに写像される。
図10は,作業用配列parent_tmpにおける構造体要素の割り付けの変更例を示す。
図10に示すように,構造体の置き換えられた順序に従って,構造体要素child1の「child1_1,child1_2,…,child1_n」の領域分を作業用配列の先頭から連続する領域に割り付ける。続けて,構造体要素num1の「num1_1,num1_2,…,num1_n」の領域分を連続する領域に割り付ける。最後に,構造体要素child2の「child2_1,child2_2,…,child2_n」の領域分を,次の位置から連続する領域に割り付ける。
ループ処理内において,構造体要素のアクセス回数が多い順に,配列の領域を割り付けることによって,アクセス回数が多い構造体要素の領域が優先して一次キャッシュにキャッシュされる可能性が高くなる。そのため,キャッシュメモリの使用効率およびプログラム実行性能を向上させることができる。
以下に,アクセスパターン取得部13およびアクセスパターン変更部14の処理フローを説明する。
図11は,アクセスパターン取得部13の処理フローを示す図である。
アクセスパターン取得部13は,入力されたプログラム(オブジェクトファイル)の解析結果から,メモリアクセスする命令を検出し(ステップS1),検出した命令に関連する構造体要素の型情報を取得する(ステップS2)。さらに,各構造体要素の配列上の位置(先頭からの何バイト先にあるかという配置)を取得する(ステップS3)。プログラムの制御から動的データフローを解析し,構造体要素のアクセス順序,アクセス回数を解析する(ステップS4)。構造体要素の配置,アクセス順序,アクセス回数などを含むアクセスパターンを取得する(ステップS5)。
図12は,第1の処理例におけるアクセスパターン変更部14の処理フローを示す図である。
アクセスパターン変更部14は,入力プログラムのメモリアクセスする命令を検出し(ステップS11),アクセスパターンから,命令が所定の条件を満たしているかを判断する(ステップS12)。例えば,以下の条件を設定しておく。
「条件:ループ処理内に配列(構造体)のアクセスがあり,かつ,その配列のアクセスが一部分の領域にのみアクセスしている。」
この命令が,前記の条件を満たす場合にのみ(ステップS12のYES),命令の各構造体が,別の構造体へのポインタを要素として持っているかを判断する(ステップS13)。
構造体が別の構造体へのポインタを要素として持つ場合にのみ(ステップS13のYES),アクセスパターンのアクセス順序に基づいて,アクセスする構造体要素の領域分を配列の先頭から連続して割り付ける(ステップS14)。
図13は,第2の処理例におけるアクセスパターン変更部14の処理フローを示す図である。
ステップS21〜S22の処理は,図12のステップS11〜12の処理と同様であるので,説明を省略する。
アクセスパターン変更部14は,前記の条件の場合にのみ(ステップS22のYES),関数内で,アクセスする構造体要素に偏りがあるかをそれぞれ判定する(ステップS23)。関数内で,アクセスする構造体要素に偏りがあると判断した場合にのみ(ステップS33のYES),その関数内で使用する構造体要素のみを要素とする構造体を,関数内の先頭部分に作成する(ステップS24)。
さらに,アクセスパターンのアクセス順序に基づいて,アクセスする構造体要素の領域分を配列の先頭から連続して割り付ける(ステップS25)。
さらに,多重化した構造体の情報の同期処理を付加する(ステップS26)。
図14は,第3の処理例におけるアクセスパターン変更部14の処理フローを示す図である。
ステップS31〜S32の処理は,図12のステップS11〜12の処理と同様であるので,説明を省略する。
アクセスパターン変更部14は,前記の条件の場合にのみ(ステップS32のYES),ループ処理内で,アクセスする構造体要素に偏りがあるかをそれぞれ判定する(ステップS33)。ループ処理内で,アクセスする構造体要素に偏りがあると判断した場合にのみ(ステップS33のYES),ループ処理前で,元の配列に対応する作業用配列(構造体)を作成し(ステップS34),アクセスパターンのアクセス回数に基づいて,アクセス回数が多い構造体要素の領域分を作業用配列の先頭から連続して割り付ける(ステップS35)。その後,ループ処理の終了時に,作業用配列の情報を元の配列に写像する(ステップS36)。
以上,本発明をその実施の形態により説明したが,本発明はその主旨の範囲において種々の変形が可能であることは当然である。
また,本形態において開示するコンパイラ処理装置は,コンピュータによって読み取られ実行されるプログラムとして実施することができる。このプログラムは,コンピュータが読み取り可能な,可搬媒体メモリ,半導体メモリ,ハードディスクなどの適当な記録媒体に格納することができ,これらの記録媒体に記録して提供され,または,通信インタフェースを介して種々の通信網を利用した送受信により提供されうるものである。
本発明の実施の形態における構成例を示す図である。 第1の処理例における構造体要素の割り付けの変更例を示す図である。 第2の処理例における処理対象のプログラム例を示す図である。 図3のプログラムにおいて,各命令に対応して構造体の定義が作成され,構造体が多重化された状態例を示す図である。 第2の処理例における,部分p1および部分p2に対応する配列の割り付けの変更例を示す図である。 第1の同期方法による同期処理の例を示す図である。 第2の同期方法による同期処理の例を示す図である。 第3の同期方法による同期処理の例を示す図である。 第3の処理例において,ループ処理内に構造体要素が並べ替えられた構造体と作業用配列が作成された状態例を示す図である。 第3の処理例における作業用配列の割り付けの変更例を示す図である。 アクセスパターン取得部の処理フローを示す図である。 第1の処理例におけるアクセスパターン変更部の処理フローを示す図である。 第2の処理例におけるアクセスパターン変更部の処理フローを示す図である。 第3の処理例におけるアクセスパターン変更部の処理フローを示す図である。 入力されるプログラム例およびプログラム内のメモリアクセスを行う命令の構造体要素の配列の割り付け例を示す図である。
符号の説明
1 コンパイル処理装置
11 コンパイル処理手段
12 リンク手段
13 アクセスパターン取得部
14 アクセスパターン変更部
111 ソース解析部
113 最適化部
115 コード生成部

Claims (8)

  1. プログラムのコンパイル処理またはリンク処理またはこれらの処理を行うコンパイル処理装置において,
    入力されたプログラムの解析結果から,メモリアクセスする命令のアクセス動作を解析し,命令に関連する構造体の要素の配列上の配置,アクセス回数およびアクセス順序を含むアクセスパターンを取得するアクセスパターン取得部と,
    前記アクセスパターンに基づいて,前記構造体の要素の配列上の配置を変更するアクセスパターン変更部とを備える
    ことを特徴とするコンパイル処理装置。
  2. 前記アクセスパターン変更部は,前記アクセスパターンのアクセス順序に基づいて,アクセスする構造体要素を,前記配列の先頭から連続する領域に割り付ける
    ことを特徴とする請求項1記載のコンパイル処理装置。
  3. 前記アクセスパターン変更部は,前記アクセスパターンのアクセス回数に基づいて,アクセス回数の高い構造体の要素を,前記配列の先頭の領域から優先して割り付ける
    ことを特徴とする請求項1または請求項2に記載のコンパイル処理装置。
  4. 前記アクセスパターン変更部は,前記構造体が関連する複数の関数内で,アクセスする構造体の要素に偏りがある場合に,該関数各々の処理内でアクセスする構造体の要素のみを前記配列の先頭から連続する領域に割り付け,該関数に関連する構造体の情報の同期処理を付加する
    ことを特徴とする請求項1または請求項3のいずれか一項に記載のコンパイル処理装置。
  5. 前記アクセスパターン変更部は,前記構造体が関連するループ処理内で,アクセスする構造体の要素に偏りがある場合に,該ループ処理内でのみ,アクセス回数が多い構造体の要素を前記配列の先頭から連続する領域に割り付ける
    ことを特徴とする請求項1または請求項3のいずれか一項に記載のコンパイル処理装置。
  6. 前記アクセスパターン取得部および前記アクセスパターン変更部は,前記コンパイル処理または前記リンク処理のいずれか一方の処理が実行されている間に起動および実行される
    ことを特徴とする請求項1ないし請求項5のいずれか一項に記載のコンパイル処理装置。
  7. コンピュータが,プログラムのコンパイル処理またはリンク処理またはこれらの処理を行う間に実行するアクセスパターン変更処理方法であって,
    入力されたプログラムの解析結果から,メモリアクセスする命令のアクセス動作を解析し,命令に関連する構造体の要素の配列上の配置,アクセス回数およびアクセス順序を含むアクセスパターンを取得するアクセスパターン取得処理過程と,
    前記アクセスパターンに基づいて,前記構造体の要素の配列上の配置を変更するアクセスパターン変更処理過程とを備える
    ことを特徴とするアクセスパターン変更処理方法。
  8. プログラムのコンパイル処理またはリンク処理またはこれらの処理を行うコンピュータを,
    入力されたプログラムの解析結果から,メモリアクセスする命令のアクセス動作を解析し,命令に関連する構造体の要素の配列上の配置,アクセス回数およびアクセス順序を含むアクセスパターンを取得するアクセスパターン取得部と,
    前記アクセスパターンに基づいて,前記構造体の要素の配列上の配置を変更するアクセスパターン変更部とを備えるコンパイル処理装置として機能させる
    ことを特徴とするアクセスパターン変更処理プログラム。
JP2008160024A 2008-06-19 2008-06-19 コンパイル処理装置,ならびにアクセスパターン変更処理方法および処理プログラム Expired - Fee Related JP5146134B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008160024A JP5146134B2 (ja) 2008-06-19 2008-06-19 コンパイル処理装置,ならびにアクセスパターン変更処理方法および処理プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008160024A JP5146134B2 (ja) 2008-06-19 2008-06-19 コンパイル処理装置,ならびにアクセスパターン変更処理方法および処理プログラム

Publications (2)

Publication Number Publication Date
JP2010003031A true JP2010003031A (ja) 2010-01-07
JP5146134B2 JP5146134B2 (ja) 2013-02-20

Family

ID=41584721

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008160024A Expired - Fee Related JP5146134B2 (ja) 2008-06-19 2008-06-19 コンパイル処理装置,ならびにアクセスパターン変更処理方法および処理プログラム

Country Status (1)

Country Link
JP (1) JP5146134B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016081135A (ja) * 2014-10-10 2016-05-16 富士通株式会社 情報処理プログラム、情報処理装置、情報処理方法
JP2019219912A (ja) * 2018-06-20 2019-12-26 富士通株式会社 情報処理装置、コンパイラプログラム及びコンパイル方法
FR3103590A1 (fr) * 2019-11-27 2021-05-28 Commissariat à l'Energie Atomique et aux Energies Alternatives Procédé de construction d’une signature caractéristique des accès, par un microprocesseur, à une mémoire

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI394352B (zh) 2009-07-16 2013-04-21 Silicon Touch Tech Inc 發電裝置
CN101997385B (zh) * 2009-08-17 2013-07-31 点晶科技股份有限公司 发电装置
RU175195U1 (ru) * 2017-08-23 2017-11-28 Акционерное общество "Корпорация "Стратегические пункты управления" АО "Корпорация "СПУ - ЦКБ ТМ" Электромашинный источник

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016081135A (ja) * 2014-10-10 2016-05-16 富士通株式会社 情報処理プログラム、情報処理装置、情報処理方法
JP2019219912A (ja) * 2018-06-20 2019-12-26 富士通株式会社 情報処理装置、コンパイラプログラム及びコンパイル方法
FR3103590A1 (fr) * 2019-11-27 2021-05-28 Commissariat à l'Energie Atomique et aux Energies Alternatives Procédé de construction d’une signature caractéristique des accès, par un microprocesseur, à une mémoire
EP3828695A1 (fr) 2019-11-27 2021-06-02 Commissariat à l'Energie Atomique et aux Energies Alternatives Procédé de construction d'une signature caractéristique des accès, par un microprocesseur, à une mémoire

Also Published As

Publication number Publication date
JP5146134B2 (ja) 2013-02-20

Similar Documents

Publication Publication Date Title
JP5146134B2 (ja) コンパイル処理装置,ならびにアクセスパターン変更処理方法および処理プログラム
US9946523B2 (en) Multiple pass compiler instrumentation infrastructure
KR101645035B1 (ko) 병렬 프로그래밍 조절 장치 및 방법
KR101213275B1 (ko) 무선 장치에서 사용할모놀리식(monolithic)이미지를 제공하기 위한시스템 및 방법
US8266416B2 (en) Dynamic reconfiguration supporting method, dynamic reconfiguration supporting apparatus, and dynamic reconfiguration system
US7480768B2 (en) Apparatus, systems and methods to reduce access to shared data storage
KR101926464B1 (ko) 멀티코어 프로세서에서 수행되는 프로그램의 컴파일 방법, 멀티코어 프로세서의 태스크 매핑 방법 및 태스크 스케줄링 방법
US6360360B1 (en) Object-oriented compiler mechanism for automatically selecting among multiple implementations of objects
CN103645888A (zh) 一种自动构建操作系统的系统及方法
US8621468B2 (en) Multi core optimizations on a binary using static and run time analysis
US8769498B2 (en) Warning of register and storage area assignment errors
JP5489884B2 (ja) 命令実行装置、命令実行方法、及び命令実行プログラム
US9311065B2 (en) Data splitting for multi-instantiated objects
KR20060035077A (ko) 데이터 처리 장치 및 이를 이용한 레지스터 할당 방법
US20120017070A1 (en) Compile system, compile method, and storage medium storing compile program
KR101670916B1 (ko) 실행 파일 생성 방법 및 그 방법을 이용하는 시스템 장치
JP4039633B2 (ja) 最適化コンパイラ、コンパイル方法、コンパイラプログラム、及び記録媒体
JP6349837B2 (ja) スケジューラ装置及びそのスケジューリング方法、演算処理システム、並びにコンピュータ・プログラム
JP5551868B2 (ja) 実行ファイル作成装置
JP5660386B2 (ja) メモリ配置管理装置、メモリ配置管理方法、メモリ配置管理プログラム、およびプログラム作成システム
JP5208589B2 (ja) コンパイル装置、コンパイラ、コンパイル方法
US20050050523A1 (en) Method to generate a formatted trace for an embedded device
JP7239827B2 (ja) 情報処理装置及びコンパイラプログラム
JP2011180814A (ja) コンパイラ装置、コンパイル方法及びプログラム
Gómez-Iglesias et al. High-Level Approaches for Leveraging Deep-Memory Hierarchies on Modern Supercomputers

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110315

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20121002

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121112

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20151207

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees