JP2021018585A - 情報処理装置及び情報処理方法 - Google Patents
情報処理装置及び情報処理方法 Download PDFInfo
- Publication number
- JP2021018585A JP2021018585A JP2019133669A JP2019133669A JP2021018585A JP 2021018585 A JP2021018585 A JP 2021018585A JP 2019133669 A JP2019133669 A JP 2019133669A JP 2019133669 A JP2019133669 A JP 2019133669A JP 2021018585 A JP2021018585 A JP 2021018585A
- Authority
- JP
- Japan
- Prior art keywords
- program
- cache
- loop
- counting
- information processing
- 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
Links
- 230000010365 information processing Effects 0.000 title claims abstract description 50
- 238000003672 processing method Methods 0.000 title claims description 8
- 238000000034 method Methods 0.000 claims description 80
- 230000015654 memory Effects 0.000 claims description 58
- 230000006870 function Effects 0.000 description 69
- 238000010586 diagram Methods 0.000 description 38
- 238000004364 calculation method Methods 0.000 description 8
- 238000003491 array Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4441—Reducing the execution time required by the program code
- G06F8/4442—Reducing the number of cache misses; Data prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/51—Source to source
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Devices For Executing Special Programs (AREA)
- Executing Machine-Instructions (AREA)
Abstract
Description
図1は、ターゲットマシン10のハードウェア構成図である。
ターゲットマシン10は、HPC(High Performance Computing)用の並列計算機やPC(Personal Computer)であって、プロセッサ11とメインメモリ12とを有する。
ここでは、データD0〜D18のアドレスm0〜m18を例にしてタグの決め方について説明する。
図4は、本実施形態に係る情報処理装置のハードウェア構成図である。
計算機21は、例えばサーバやPC等であって、メインメモリ25、プロセッサ26、入力装置27、表示装置28、及びネットワークインターフェース29を備える。これらの各部はバス30によって相互に接続される。
図6は、本実施形態に係る情報処理プログラム24の構成図である。
図6に示すように、情報処理プログラム24は、コンパイラ41、プログラムトランスレータ42、プロファイル情報生成プログラム43、及び分割実行プログラム44を有する。
プログラムトランスレータ42は、アプリケーションプログラム15を書き換えることによりプロファイル情報生成プログラム43を生成するプログラムである。そのプロファイル情報生成プログラム43を生成するとき、プログラムトランスレータ42は対情報46を利用する。
対情報46は、プロファイル情報17(図3参照)の順序対を含む情報である。前述のように、その順序対は、複数の文の対のうちで、ループ内で実行したときの実行結果がアプリケーションプログラム15におけるのと同じになる対である。
プロファイル情報生成プログラム43は、計数プログラムの一例であって、前述のプロファイル情報17を生成するプログラムである。
図10に示すように、キャッシュ構成情報48には、ターゲットマシン10(図1参照)のキャッシュメモリ14の連想度A、ブロックサイズB、及びセット数Sの各々の値が格納される。
分割実行プログラム44は、プロファイル情報17を利用してアプリケーションプログラム15のループ15a(図3参照)を複数個に分割し、分割後のプログラムを出力プログラム18として出力する。
次に、情報処理装置20でこの情報処理プログラム24を実行することにより実現される本実施形態に係る情報処理方法の処理の概略について説明する。
次に、本実施形態に係る情報処理装置20の機能構成について説明する。
次に、前述のプログラム生成部52の処理について説明する。
プログラム生成部52は、アプリケーションプログラム15を書き換えることによりプロファイル情報生成プログラム43を生成する。ここでは、そのプロファイル情報生成プログラム43としてC言語のソースプログラムを生成する。その生成方法について以下に説明する。
構成要素E1〜E5は、アプリケーションプログラム15のソースコードを意味のあるまとまりに分解して得られた要素である。例えば、セミコロン「;」で終端する文S1〜S3の各々は構成要素E2〜E4となる。また、構成要素E1のようなループの宣言も構成要素となる。なお、ループの宣言は、for文とその初期化式「i=0」、継続条件式「i<N」、及び変化式「i++」、始まりの括弧「{」を指す。また、ループの終わりの括弧「}」は構成要素E5となる。
ここで、NOと判定された場合にはステップP13に移る。
このようにNOと判断された場合にはステップP17に移る。
まず、構成要素E2が処理対象の場合を考える。
上記のようにしてステップP18を終えた後はステップP11に再び戻る。そして、ステップP12において、処理すべき構成要素がない(YES)と判断された場合はステップP19に移る。
以上により、図13のフローチャートの処理を終える。
計数部53の機能は、関数ACCESS(c, s, a)を含むプロファイル情報生成プログラム43(図19参照)をメインメモリ25とプロセッサ26が協同して実行することにより実現される。
ステップP22においては、計数部53が変数HIT_Pを-1に初期化する。
図22(a)は、ループ分割の他の例について説明するためのプロファイル情報17を示す図である。
(付記1) ループ内に複数の文が記述された入力プログラムの入力を受け付ける受付部と、
前記入力プログラムを書き換えることにより、複数の前記文の対ごとに前記ループを実行したときに想定されるキャッシュミス回数とキャッシュヒット回数とを計数する処理を計算機に実行させるための計数プログラムを生成するプログラム生成部と、
前記処理において計数した前記キャッシュミス回数と前記キャッシュヒット回数とに基づいて前記ループを複数個に分割する分割部と、
を有することを特徴とする情報処理装置。
(付記2) 前記プログラム生成部は、複数の前記対ごとに前記キャッシュミス回数と前記キャッシュヒット回数とを計数する計数処理を前記ループ内に記述することを特徴とする付記1に記載の情報処理装置。
(付記3) 前記プログラム生成部は、複数の前記対のうち、前記ループ内で実行したときの実行結果が前記入力プログラムにおけるのと異なる対に対する前記処理を前記計数プログラムに記述しないことを特徴とする付記1に記載の情報処理装置。
(付記4) 前記キャッシュミス回数と前記キャッシュヒット回数とを計数する対象であるキャッシュメモリの複数のセット番号に対応して前記計算機が複数設けられ、
前記計算機の各々が、自身に対応した前記セット番号における前記キャッシュミス回数と前記キャッシュヒット回数とを並列して計数することを特徴とする付記1に記載の情報処理装置。
(付記5) 前記分割部は、前記対のうちで前記キャッシュヒット回数が最も多い対が一つのループに含まれるように前記分割を行うことを特徴とする付記1に記載の情報処理装置。
(付記6) 前記分割部は、前記キャッシュヒット回数が同じ前記対のうちで前記キャッシュミス回数が最も少ない対が一つのループに含まれるように前記分割を行うことを特徴とする付記1に記載の情報処理装置。
(付記7) ループ内に複数の文が記述された入力プログラムの入力を受け付ける処理と、
前記入力プログラムを書き換えることにより、複数の前記文の対ごとに前記ループを実行したときに想定されるキャッシュミス回数とキャッシュヒット回数とを計数する処理を計算機に実行させるための計数プログラムを生成する処理と、
前記計数する処理において計数した前記キャッシュミス回数と前記キャッシュヒット回数とに基づいて前記ループを複数個に分割する処理と、
をコンピュータが実行することを特徴とする情報処理方法。
Claims (5)
- ループ内に複数の文が記述された入力プログラムの入力を受け付ける受付部と、
前記入力プログラムを書き換えることにより、複数の前記文の対ごとに前記ループを実行したときに想定されるキャッシュミス回数とキャッシュヒット回数とを計数する処理を計算機に実行させるための計数プログラムを生成するプログラム生成部と、
前記処理において計数した前記キャッシュミス回数と前記キャッシュヒット回数とに基づいて前記ループを複数個に分割する分割部と、
を有することを特徴とする情報処理装置。 - 前記プログラム生成部は、複数の前記対ごとに前記キャッシュミス回数と前記キャッシュヒット回数とを計数する計数処理を前記ループ内に記述することを特徴とする請求項1に記載の情報処理装置。
- 前記プログラム生成部は、複数の前記対のうち、前記ループ内で実行したときの実行結果が前記入力プログラムにおけるのと異なる対に対する前記処理を前記計数プログラムに記述しないことを特徴とする請求項1に記載の情報処理装置。
- 前記キャッシュミス回数と前記キャッシュヒット回数とを計数する対象であるキャッシュメモリの複数のセット番号に対応して前記計算機が複数設けられ、
前記計算機の各々が、自身に対応した前記セット番号における前記キャッシュミス回数と前記キャッシュヒット回数とを並列して計数することを特徴とする請求項1に記載の情報処理装置。 - ループ内に複数の文が記述された入力プログラムの入力を受け付ける処理と、
前記入力プログラムを書き換えることにより、複数の前記文の対ごとに前記ループを実行したときに想定されるキャッシュミス回数とキャッシュヒット回数とを計数する処理を計算機に実行させるための計数プログラムを生成する処理と、
前記計数する処理において計数した前記キャッシュミス回数と前記キャッシュヒット回数とに基づいて前記ループを複数個に分割する処理と、
をコンピュータが実行することを特徴とする情報処理方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019133669A JP7230719B2 (ja) | 2019-07-19 | 2019-07-19 | 情報処理装置及び情報処理方法 |
EP20178075.6A EP3767461A1 (en) | 2019-07-19 | 2020-06-03 | Information processing apparatus and information processing method |
US16/902,331 US11080030B2 (en) | 2019-07-19 | 2020-06-16 | Information processing apparatus and information processing method |
CN202010553654.2A CN112241377A (zh) | 2019-07-19 | 2020-06-17 | 信息处理设备和信息处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019133669A JP7230719B2 (ja) | 2019-07-19 | 2019-07-19 | 情報処理装置及び情報処理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2021018585A true JP2021018585A (ja) | 2021-02-15 |
JP7230719B2 JP7230719B2 (ja) | 2023-03-01 |
Family
ID=70977456
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019133669A Active JP7230719B2 (ja) | 2019-07-19 | 2019-07-19 | 情報処理装置及び情報処理方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11080030B2 (ja) |
EP (1) | EP3767461A1 (ja) |
JP (1) | JP7230719B2 (ja) |
CN (1) | CN112241377A (ja) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02110669A (ja) * | 1988-10-19 | 1990-04-23 | Fujitsu Ltd | ベクトル化処理方法 |
JP2008040734A (ja) * | 2006-08-04 | 2008-02-21 | Hitachi Ltd | 実行コードの生成方法及びプログラム |
JP2015141543A (ja) * | 2014-01-29 | 2015-08-03 | 富士通株式会社 | ループ分割検出プログラム及びループ分割検出方法 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5903915A (en) * | 1995-03-16 | 1999-05-11 | Intel Corporation | Cache detection using timing differences |
US7421681B2 (en) * | 2003-10-09 | 2008-09-02 | International Business Machines Corporation | Method and system for autonomic monitoring of semaphore operation in an application |
JP2007272681A (ja) | 2006-03-31 | 2007-10-18 | Nec Electronics Corp | キャッシュメモリ装置及びそのキャッシュラインの入れ替え方法 |
US8671401B2 (en) * | 2007-04-09 | 2014-03-11 | Microsoft Corporation | Tiling across loop nests with possible recomputation |
US8561044B2 (en) * | 2008-10-07 | 2013-10-15 | International Business Machines Corporation | Optimized code generation targeting a high locality software cache |
JP2011170439A (ja) | 2010-02-16 | 2011-09-01 | Nec Corp | コンパイラ、コンパイル方法、及びコンパイル実行プログラム |
JP6191240B2 (ja) | 2013-05-28 | 2017-09-06 | 富士通株式会社 | 変数更新装置、変数更新システム、変数更新方法、変数更新プログラム、変換プログラム、及びプログラム変更検証システム |
JP2015194881A (ja) * | 2014-03-31 | 2015-11-05 | 富士通株式会社 | コンパイル装置、コンパイラプログラム、コンパイル方法 |
JP6730587B2 (ja) * | 2016-06-13 | 2020-07-29 | 富士通株式会社 | キャッシュミス推定プログラム、キャッシュミス推定方法及び情報処理装置 |
JP6665720B2 (ja) * | 2016-07-14 | 2020-03-13 | 富士通株式会社 | 情報処理装置、コンパイルプログラム、コンパイル方法、およびキャッシュ制御方法 |
-
2019
- 2019-07-19 JP JP2019133669A patent/JP7230719B2/ja active Active
-
2020
- 2020-06-03 EP EP20178075.6A patent/EP3767461A1/en not_active Withdrawn
- 2020-06-16 US US16/902,331 patent/US11080030B2/en active Active
- 2020-06-17 CN CN202010553654.2A patent/CN112241377A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02110669A (ja) * | 1988-10-19 | 1990-04-23 | Fujitsu Ltd | ベクトル化処理方法 |
JP2008040734A (ja) * | 2006-08-04 | 2008-02-21 | Hitachi Ltd | 実行コードの生成方法及びプログラム |
JP2015141543A (ja) * | 2014-01-29 | 2015-08-03 | 富士通株式会社 | ループ分割検出プログラム及びループ分割検出方法 |
Also Published As
Publication number | Publication date |
---|---|
US20210019128A1 (en) | 2021-01-21 |
US11080030B2 (en) | 2021-08-03 |
EP3767461A1 (en) | 2021-01-20 |
CN112241377A (zh) | 2021-01-19 |
JP7230719B2 (ja) | 2023-03-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7568189B2 (en) | Code translation and pipeline optimization | |
US9495136B2 (en) | Using aliasing information for dynamic binary optimization | |
US8554535B2 (en) | Instruction-set architecture simulation techniques using just in time compilation | |
JPH025140A (ja) | シミュレーシヨン方法 | |
JPH025139A (ja) | シミユレーシヨン方法 | |
JP2004110812A (ja) | マルチプロセッサ・ホスト上でのマルチプロセッサ・アドレス変換の効率のよいエミュレーションのための方法およびシステム | |
CN113196243A (zh) | 使用编译器生成的仿真优化元数据改进仿真和跟踪性能 | |
US9658849B2 (en) | Processor simulation environment | |
Hartley | Compile-time program restructuring in multiprogrammed virtual memory systems | |
US8886512B2 (en) | Simulation apparatus, computer-readable recording medium, and method | |
JP7230719B2 (ja) | 情報処理装置及び情報処理方法 | |
JPH0668724B2 (ja) | シミユレーシヨン方法 | |
JP2020523693A (ja) | Jitコンパイラを使用しかつ選択されたターゲットコードブロックの変換をバイパスするターゲットシステムのエミュレーション | |
Rosin | The significance of microprogramming | |
Edwards et al. | MU6-G. A new design to achieve mainframe performance from a mini-sized computer | |
Yuan et al. | Automatic enhanced CDFG generation based on runtime instrumentation | |
Martínez del Amor et al. | Simulation of recognizer P systems by using manycore GPUs | |
Ding et al. | TURNIP: A" Nondeterministic" GPU Runtime with CPU RAM Offload | |
JPH02176938A (ja) | 機械語命令最適化方式 | |
US20050251795A1 (en) | Method, system, and program for optimizing code | |
US11630667B2 (en) | Dedicated vector sub-processor system | |
Lin et al. | PUMP: Profiling-free Unified Memory Prefetcher for Large DNN Model Support | |
JP2994280B2 (ja) | 計算機システムの性能評価方法 | |
Kaufmann et al. | Superblock compilation and other optimization techniques for a Java-based DBT machine emulator | |
WO2007131089A2 (en) | Code translation and pipeline optimization |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20220407 |
|
TRDD | Decision of grant or rejection written | ||
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20230111 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20230117 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20230130 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7230719 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |