JP5447774B2 - プリフェッチ命令生成方法、コンパイラ、及びプログラム - Google Patents
プリフェッチ命令生成方法、コンパイラ、及びプログラムInfo
- Publication number
- JP5447774B2 JP5447774B2 JP2008305074A JP2008305074A JP5447774B2 JP 5447774 B2 JP5447774 B2 JP 5447774B2 JP 2008305074 A JP2008305074 A JP 2008305074A JP 2008305074 A JP2008305074 A JP 2008305074A JP 5447774 B2 JP5447774 B2 JP 5447774B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- store
- load
- prefetch
- optimization target
- 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)
- Memory System Of A Hierarchy Structure (AREA)
Description
状態1:データがない状態。
状態2:ロードに適する状態。
状態3:ロード及びストアに適した状態。
プロファイル1:状態1から状態2への遷移がどのロード命令で起きているか。
プロファイル2:状態2から状態3への遷移がどのストア命令で起きているか。
プロファイル3:ソースプログラムに含まれる各if文の分岐確率。
(1)base:プリフェッチ・グループに含まれるロード命令及びストア命令のベースアドレス。
(2)min,max:プリフェッチ・グループのオフセットの最小値、最大値。実数とは限らず、変数を含んでもよい。変数を含む場合には、例えば、min=i−5,max=i+5と表される。
(3)rep:プリフェッチ・グループに対して、プリフェッチ命令を生成するときに使用するオフセット。repはminとmaxとの間の値となる。
(4)stores:プリフェッチ命令に含まれるストア命令の集合。具体的には、ベース(base)を基準とし、オフセットがmin、maxの範囲にあるストア命令の集合である。
(5)loads:プリフェッチ命令に含まれるロード命令の集合。具体的には、ベース(base)を基準とし、オフセットがmin、maxの範囲にあるロード命令の集合である。
(2)min:16
max:32
(3)rep:16
(4)stores:{a.x,a.y}
(5)stores:{a.x,a.y}
GEN11(B):ベーシックブロックBに含まれる基準ストア命令のうち、ベーシックブロックBの先頭までベースアドレスが変わらない基準ストア命令に対応するプリフェッチ・グループの集合。
KILL11(B):ベーシックブロックB内のベースアドレスを更新する命令が存在した場合、当該ベースアドレスを使用している全てのプリフェッチ・グループのストア命令の集合。
HighFreqSucc(B):ブロックBの直後のブロックの集合のうち、実行頻度が低いパスで接続されるブロックを除いたブロックの集合。
ベーシックブロックB:1つの入り口ポイント及び1つの出口だけしか持たず、すなわちコントロールフローが途中に入ることもなく、途中から出ることもないような命令集合の範囲をブロックで認識したものである。
GEN31(B):ベーシックブロックBに含まれる基準ロード命令のうち、ベーシックブロックBの先頭までベースアドレスが変わらない基準ロード命令に対応するプリフェッチ・グループの集合。
KILL11(B):ベーシックブロックB内のベースアドレスを更新する命令が存在した場合、当該ベースアドレスを使用している全てのプリフェッチ・グループのロード命令の集合。
41、42、 ストア命令
31、32、33、34 ロード命令
51 ストア影響領域
61 ロード影響領域
101、102 ストア・プリフェッチ命令
103 ロード・プリフェッチ命令
Claims (9)
- ソースプログラムをオブジェクト・コードにコンパイルして実行する情報処理装置において利用される、プリフェッチ命令を生成する方法であって、
前記情報処理装置が、前記ソースプログラムを構成する1以上の最適化対象領域毎に、前記最適化対象領域に含まれる命令のうち、キャッシュをデータがない状態からロードに適した状態へ遷移させるロード命令と、前記最適化対象領域に含まれる命令のうち、キャッシュをロードに適した状態からロード及びストアに適した状態へ遷移させるストア命令と、を最適化対象として特定するステップと、
前記情報処理装置が、前記最適化対象領域において、前記最適化対象として特定されたストア命令及びロード命令のうち、ベース・メモリアドレスが同じであって、メモリアドレス上の所定のオフセットの範囲を満足しているストア命令及びロード命令を1グループとし、1以上のグループに分類するステップと、
前記情報処理装置が、前記最適化対象領域において、前記1以上のグループに含まれる前記最適化対象のストア命令について、前記1以上のグループ毎に、当該ストア命令に前記ベース・メモリアドレスが変わらず、実行頻度の高いパスを通って到達できるストア影響領域を求めるステップと、
前記情報処理装置が、求められた前記ストア影響領域それぞれにおいて、前記最適化対象のストア命令より前のロード命令のうち、当該ストア影響領域の内にて先頭にあるロード命令より前に当該ストア影響領域に対応するグループに対するストア・プリフェッチ命令を生成するステップと、
を含むプリフェッチ命令を生成する方法。 - 前記情報処理装置が、前記最適化対象領域において、前記1以上のグループに含まれる最適化対象のロード命令について、前記1以上のグループ毎に、当該ロード命令に前記ベース・メモリアドレスが変わらず、実行頻度の高いパスを通って到達できる領域のうち、前記ストア影響領域を除いたロード影響領域を求めるステップと、
前記情報処理装置が、求められた前記ロード影響領域それぞれにおいて、当該ロード影響領域に対応するグループに対するロード・プリフェッチ命令を生成するステップと、
をさらに含む請求項1に記載のプリフェッチ命令を生成する方法。 - 前記ストア影響領域は、後進データフロー解析を用いて求める、請求項2に記載のプリフェッチ命令を生成する方法。
- 前記ストア影響領域内にて先頭にあるロード命令を、前進データフロー解析を用いて求める、請求項2に記載のプリフェッチ命令を生成する方法。
- 前記ロード影響領域は、後進データフロー解析を用いて求める、請求項2に記載のプリフェッチ命令を生成する方法。
- 前記最適化対象のロード命令には、ロード命令が含まれている可能性がある命令をも含む、請求項1に記載のプリフェッチ命令を生成する方法。
- ソースプログラムをオブジェクト・コードにコンパイルして実行する情報処理装置で利用されるコンパイラであって、
前記情報処理装置に、
前記ソースプログラムを構成する複数の最適化対象領域毎に、前記最適化対象領域に含まれる命令のうち、キャッシュをデータがない状態からロードに適した状態へ遷移させるロード命令と、前記最適化対象領域に含まれる命令のうち、キャッシュをロードに適した状態からロード及びストアに適した状態へ遷移させるストア命令と、を最適化対象として特定するステップと、
前記最適化対象領域において、前記最適化対象として特定されたストア命令及びロード命令のうち、ベース・メモリアドレスが同じであって、メモリアドレス上の所定のオフセットの範囲を満足しているストア命令及びロード命令を1グループとし、1以上のグループに分類するステップと、
前記最適化対象領域において、前記1以上のグループに含まれる前記最適化対象のストア命令について、前記1以上のグループ毎に、当該ストア命令に前記ベース・メモリアドレスが変わらず、実行頻度の高いパスを通って到達できるストア影響領域を求めるステップと、
求められた前記ストア影響領域それぞれにおいて、前記最適化対象のストア命令より前のロード命令のうち、当該ストア影響領域の内にて先頭にあるロード命令より前に当該ストア影響領域に対応するグループに対するストア・プリフェッチ命令を生成するステップと、
を実行させるコンパイラ。 - コンピュータに、ソースプログラムからオブジェクト・コードを生成させる処理を実行させるプログラムであって、
前記コンピュータに、
前記ソースプログラムを構成する複数の最適化対象領域毎に、前記最適化対象領域に含まれる命令のうち、キャッシュをデータがない状態からロードに適した状態へ遷移させるロード命令と、前記最適化対象領域に含まれる命令のうち、キャッシュをロードに適した状態からロード及びストアに適した状態へ遷移させるストア命令と、を最適化対象として特定するステップと、
前記最適化対象領域において、前記最適化対象として特定されたストア命令及びロード命令のうち、ベース・メモリアドレスが同じであって、メモリアドレス上の所定のオフセットの範囲を満足しているストア命令及びロード命令を1グループとし、1以上のグループに分類するステップと、
前記最適化対象領域において、前記1以上のグループに含まれる前記最適化対象のストア命令について、前記1以上のグループ毎に、当該ストア命令に前記ベース・メモリアドレスが変わらず、実行頻度の高いパスを通って到達できるストア影響領域を求めるステップと、
求められた前記ストア影響領域それぞれにおいて、前記最適化対象のストア命令より前のロード命令のうち、当該ストア影響領域の内にて先頭にあるロード命令より前に当該ストア影響領域に対応するグループに対するストア・プリフェッチ命令を生成するステップと、
を実行させるプログラム。 - ソースプログラムをオブジェクト・コードにコンパイルして実行する情報処理装置において利用される、プリフェッチ命令を生成する方法であって、
前記情報処理装置が、前記ソースプログラムを構成する1以上の最適化対象領域毎に、前記最適化対象領域に含まれる命令のうち、キャッシュをデータがない状態からロードに適した状態へ遷移させるロード命令と、前記最適化対象領域に含まれる命令のうち、キャッシュをロードに適した状態からロード及びストアに適した状態へ遷移させるストア命令と、を最適化対象として特定するステップと、
前記情報処理装置が、前記最適化対象領域において、前記最適化対象として特定されたストア命令及びロード命令のうち、ベース・メモリアドレスが同じであって、メモリアドレス上の所定のオフセットの範囲を満足しているストア命令及びロード命令を1グループとし、1以上のグループに分類するステップと、
前記情報処理装置が、前記最適化対象領域において、前記1以上のグループに含まれる前記最適化対象のストア命令について、前記1以上のグループ毎に、当該ストア命令に前記ベース・メモリアドレスが変わらず、実行頻度の高いパスを通って到達できるストア影響領域を後進データフロー解析により求めるステップと、
前記情報処理装置が、求められた前記ストア影響領域それぞれにおいて、前記最適化対象のストア命令より前のロード命令のうち、当該ストア影響領域の内にて先頭にあるロード命令を前進データフロー解析により求め、求められた前記ストア影響領域の内にて先頭にあるロード命令より前に当該ストア影響領域に対応するグループに対するストア・プリフェッチ命令を生成するステップと、
前記情報処理装置が、前記最適化対象領域において、前記1以上のグループに含まれる最適化対象のロード命令について、前記1以上のグループ毎に、当該ロード命令に前記ベース・メモリアドレスが変わらず、実行頻度の高いパスを通って到達できる領域のうち、前記ストア影響領域を除いたロード影響領域を後進データフロー解析により求めるステップと、
前記情報処理装置が、求められた前記ロード影響領域それぞれにおいて、当該ロード影響領域に対応するグループに対するロード・プリフェッチ命令を生成するステップと、
を含む、プリフェッチ命令を生成する方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008305074A JP5447774B2 (ja) | 2008-11-28 | 2008-11-28 | プリフェッチ命令生成方法、コンパイラ、及びプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008305074A JP5447774B2 (ja) | 2008-11-28 | 2008-11-28 | プリフェッチ命令生成方法、コンパイラ、及びプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2010128960A JP2010128960A (ja) | 2010-06-10 |
JP5447774B2 true JP5447774B2 (ja) | 2014-03-19 |
Family
ID=42329285
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008305074A Expired - Fee Related JP5447774B2 (ja) | 2008-11-28 | 2008-11-28 | プリフェッチ命令生成方法、コンパイラ、及びプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5447774B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114528025A (zh) * | 2022-02-25 | 2022-05-24 | 深圳市航顺芯片技术研发有限公司 | 指令处理方法、装置、微控制器及可读存储介质 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9483308B2 (en) * | 2012-06-29 | 2016-11-01 | Intel Corporation | Performance of predicted actions |
JP2018206175A (ja) * | 2017-06-07 | 2018-12-27 | 富士通株式会社 | コンパイラ、情報処理装置及びコンパイル方法 |
CN116644004A (zh) * | 2018-05-23 | 2023-08-25 | 北京忆芯科技有限公司 | 预读方法及其存储控制器 |
-
2008
- 2008-11-28 JP JP2008305074A patent/JP5447774B2/ja not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114528025A (zh) * | 2022-02-25 | 2022-05-24 | 深圳市航顺芯片技术研发有限公司 | 指令处理方法、装置、微控制器及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
JP2010128960A (ja) | 2010-06-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5473768B2 (ja) | マルチパス動的プロファイリングのためのコンピュータに実行させる方法、システム及びコンピュータ・プログラム | |
US7086046B2 (en) | Method and apparatus for displaying compiler-optimizated code | |
US8997040B2 (en) | Variable closure | |
EP0905617B1 (en) | Method for generating a java bytecode data flow graph | |
US7784039B2 (en) | Compiler, compilation method, and compilation program | |
JP6524021B2 (ja) | コンパイル用の構文解析済みヘッダ | |
JP4806060B2 (ja) | コンパイラ・プログラム、コンパイル方法及びコンピュータ・システム | |
JP2009110299A (ja) | プログラムを最適化するコンパイラ | |
US20060200796A1 (en) | Program development apparatus, method for developing a program, and a computer program product for executing an application for a program development apparatus | |
JP4041248B2 (ja) | コンパイラ装置、コンパイルプログラムが記録されたコンピュータ読み取り可能な記録媒体及びコンパイル方法 | |
JP3813087B2 (ja) | プログラム変換方法、コンピュータ装置及びプログラム | |
JP2000081983A (ja) | ル―プに対するバ―ジョニングを実行する方法及び装置、配列レンジ・チェックに関する情報をベ―シック・ブロック内において収集する方法及び装置、配列レンジ・チェックに関する情報を変更する方法、配列レンジ・チェック最適化方法、配列レンジ・チェックのためのコ―ドを生成する方法、不要配列レンジ・チェック除去方法及び装置、配列レンジ・チェックを選択する方法、配列レンジ・チェック変更方法、配列レンジ・チェック収集方法、及び配列レンジ・チェック取扱判断方法 | |
JP5447774B2 (ja) | プリフェッチ命令生成方法、コンパイラ、及びプログラム | |
US8296750B2 (en) | Optimization of a target program | |
US10013244B2 (en) | Apparatus and method to compile a variadic template function | |
US6665864B1 (en) | Method and apparatus for generating code for array range check and method and apparatus for versioning | |
US6925636B2 (en) | Method and apparatus for refining an alias set of address taken variables | |
JP2006163686A (ja) | コンパイル方法、コンパイルプログラム、コンパイル装置およびコンパイル用の記録媒体 | |
JP6481515B2 (ja) | 情報処理装置、コンパイル方法、及びコンパイラプログラム | |
JP3790707B2 (ja) | プログラム変換方法、これを用いたコンピュータ装置及びプログラム | |
US20180300113A1 (en) | Partial connection of iterations during loop unrolling | |
JP2017091070A (ja) | 実行可能コード生成プログラムおよび実行可能コード生成装置 | |
JP2006139413A (ja) | プログラム、プログラムコードの合理化方法、プログラムコードの生成方法、プログラムコード、及び情報処理装置 | |
US20170344351A1 (en) | Information processing apparatus, compiling management method, and recording medium | |
US20230376290A1 (en) | Domain specific inlining for interpreters |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20110908 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20130205 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130305 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130605 |
|
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: 20131126 |
|
RD14 | Notification of resignation of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7434 Effective date: 20131127 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20131217 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |