JP5687603B2 - プログラム変換装置、プログラム変換方法、および変換プログラム - Google Patents
プログラム変換装置、プログラム変換方法、および変換プログラム Download PDFInfo
- Publication number
- JP5687603B2 JP5687603B2 JP2011245813A JP2011245813A JP5687603B2 JP 5687603 B2 JP5687603 B2 JP 5687603B2 JP 2011245813 A JP2011245813 A JP 2011245813A JP 2011245813 A JP2011245813 A JP 2011245813A JP 5687603 B2 JP5687603 B2 JP 5687603B2
- Authority
- JP
- Japan
- Prior art keywords
- access
- memory
- thread
- attribute
- program
- 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
Classifications
-
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0837—Cache consistency protocols with software control, e.g. non-cacheable data
-
- 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
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)
Description
このような情報処理装置においては、第1のコアが備えるキャッシュメモリに格納されたデータを第1のコアがキャッシュメモリ上で書き換えた後、同じデータを第2のコアが参照する場合、第2のコアが共有メモリ(コア間で共有されるメモリ)上にある書き換え前のデータに対して処理を行うと、問題が発生する。こうした問題を回避するために、第2のコアがデータに対して処理を行う前に、第1のコアがキャッシュメモリで書き換えたデータを共有メモリ上に書き戻す処理(ライトバック処理)を行う。
図1に示した例によれば、アクセス単位データである「array0」と「char0」とがキャッシュライン1000を共有している。「array0」および「char0」は、同時に実行可能な異なるスレッドの夫々からメモリアクセスされうるデータであるとする。この場合に、第1のコアが「array0」に、第2のコアが「char0」に、夫々が有するキャッシュメモリを介して共有メモリに同時にアクセスすると、第1のコアのキャッシュメモリでは「array0」が更新されるが「char0」が更新されず、第2のコアのキャッシュメモリでは「char0」が更新されるが「array0」が更新されない。したがって、更新後にどちらのキャッシュメモリをライトバック処理してもキャッシュコヒーレンシが保てない。
図2は、本発明の第1の実施形態のプログラム変換装置の機能構成を示す図である。図2のプログラム変換装置100は、解析部101と、アクセス属性決定部102と、非共有化対象分類部103と、変換部104とを具備している。また、プログラム変換装置100には、ソースプログラム201およびプロファイル情報202が入力される。
図3は、ソースプログラム201が実行対象とする情報処理装置の構成例を示す図である。情報処理装置300は、個別に1次キャッシュ311〜314を備える複数のコア301〜304と、2次キャッシュ321と、メインメモリ331とを備えている。1次キャッシュ311〜314、2次キャッシュ321、メインメモリ331は、階層メモリ構造を構成する。即ち、L1キャッシュ311〜314は、L2キャッシュ321に共通接続されており、L2キャッシュ321はメインメモリ331に接続されている。
このソースプログラム201において、「array0[10]」は、10個の要素を持つ配列を示し、「char0」は、1つの変数を示す。「thread_0」、「thread_1」、「thread_2」は夫々スレッドを示す。「SYNC(thread_0)」はthread_0が終了するまで後続に記述された処理を実行しない同期処理を示す。「READ(array0[i])」はarray0のi番目の要素への読み込み処理を、「WRITE(array0[i])」は「array0」のi番目の要素への書き込み処理を、「WRITE(char0)」は変数char0への書き込み処理を、夫々示している。図7に示すように、「thread_1」および「thread_2」の処理は、並列に実行することができる。
あるアクセス単位データが、特定のアクセス単位データとキャッシュラインを共有すると、キャッシュコヒーレンシを保つ制約から性能低下を引き起すが、特定のアクセス単位データを除く他のアクセス単位データと共有しても性能低下を引き起こさない場合がある。第2の実施形態のプログラム変換装置は、ライトバック処理を必要とするアクセス単位データを一律に非共有化処理の対象とするのではなく、キャッシュラインを共有すると性能低下を引き起こすアクセス単位データの対を特定し、特定したアクセス単位データの対のみ非共有化処理対象とする。また、ライトバック処理を必要とするアクセス単位データと並列にメモリアクセスされるアクセス単位データであっても、当該ライトバック処理を必要とするアクセス単位データと並列にメモリアクセスされるアクセス単位データに対するメモリアクセスが読み込み処理であってかつこのアクセス単位データがライトバック処理を必要しない場合には、双方のアクセス単位データがキャッシュラインを共有することを許容する。
図14に示すソースプログラム201において、「char1」は、「char0」とは異なる1つの変数を示す。図15に示すように、このソースプログラム201によれば、「thread_0」は、「array0」の10個の要素に対する読み込み処理を実行する。「thread_0」の処理が終了した後、「thread_1」は、「array0」の各要素への読み込み処理と「char1」に対する書き込み処理とを実行し、「thread_2」は、「char0」へ書き込み処理を実行する。「thread_1」および「thread_2」の処理は、並列に実行することができる。
複数のアクセス単位データが、常に同一のタイミングで、同一のスレッドから同一のアクセス属性のメモリアクセスがなされる場合には、たとえアクセス属性がライトバック処理を要するものであっても、当該複数のアクセス単位データがキャッシュラインを共有しても、キャッシュコヒーレンシを保つことができる。そのような場合には、当該複数のアクセス単位データがPrivate属性に設定されることがあっても、当該複数のアクセス単位データの組み合わせを同一のキャッシュラインに配置するようにしてもよい。
配列の1つ以上の要素、構造体のメンバ変数など、配列や構造体を構成するデータの一部をアクセス単位データとして各種処理を実行するようにしてもよい。
プログラム変換装置100は、アクセス属性決定部102、非共有化対象分類部103、変換部104を具備するとして説明したが、これらの構成要素のうちの複数を統合したり、これらの構成要素のうちの一つを分割したり、一部の構成要素の実行順番を入れ替えたりして構成するようにしてもかまわない。
Claims (6)
- 個別にキャッシュメモリを有する複数のプロセッサコアを備えるマルチプロセッサ環境で実行されるソースプログラムを構成するスレッドによる排他的なメモリアクセスから前記キャッシュメモリを使用するメモリアクセスを決定するアクセス属性決定部と、
前記キャッシュメモリを使用してメモリアクセスされるアクセスデータのうちから、任意のアクセスデータとの間でキャッシュラインを非共有化させるアクセスデータを決定する非共有化対象分類部と、
前記アクセス属性決定部による決定結果に基づいて前記キャッシュメモリを使用する処理、および、前記非共有化対象分類部による決定結果に基づいて前記キャッシュラインを非共有化させる処理を、前記ソースプログラムに挿入し、前記挿入したソースプログラムを出力する変換部と、
を備えることを特徴とするプログラム変換装置。 - 前記ソースプログラムを解析し、メモリアクセス毎のスレッドとアクセスデータとの対を記述した第1のリストと、並列に実行されるスレッドの集合を記述した第2のリストとを生成する解析部をさらに備え、
前記アクセス属性決定部は、前記第1および第2のリストに基づいて前記排他的なメモリアクセスを求める、
ことを特徴とする請求項1に記載のプログラム変換装置。 - 前記アクセス属性決定部は、前記排他的なメモリアクセスをキャッシュメモリを使用した場合と使用しない場合との夫々で性能評価し、評価結果に基づいて前記排他的なメモリアクセスのうちから前記キャッシュメモリを使用するメモリアクセスを決定する、
ことを特徴とする請求項1に記載のプログラム変換装置。 - 前記非共有化対象分類部は、前記キャッシュメモリを使用してメモリアクセスされるアクセスデータの全てを、任意のアクセスデータとの間でキャッシュラインを非共有化させるアクセスデータに決定する、
ことを特徴とする請求項1に記載のプログラム変換装置。 - 個別にキャッシュメモリを有する複数のプロセッサコアを備えるマルチプロセッサ環境で実行されるソースプログラムを構成するスレッドによる排他的なメモリアクセスから前記キャッシュメモリを使用するメモリアクセスを決定するアクセス属性決定ステップと、
前記キャッシュメモリを使用してメモリアクセスされるアクセスデータのうちから、任意のアクセスデータとの間でキャッシュラインを非共有化させるアクセスデータを決定する非共有化対象分類ステップと、
前記アクセス属性決定ステップによる決定結果に基づいて前記キャッシュメモリを使用する処理、および、前記非共有化対象分類ステップによる決定結果に基づいて前記キャッシュラインを非共有化させる処理を、前記ソースプログラムに挿入し、前記挿入したソースプログラムを出力する変換ステップと、
を備えることを特徴とするプログラム変換方法。 - 個別にキャッシュメモリを有する複数のプロセッサコアを備えるマルチプロセッサ環境で実行されるソースプログラムを構成するスレッドによる排他的なメモリアクセスから前記キャッシュメモリを使用するメモリアクセスを決定するアクセス属性決定ステップと、
前記キャッシュメモリを使用してメモリアクセスされるアクセスデータのうちから、任意のアクセスデータとの間でキャッシュラインを非共有化させるアクセスデータを決定する非共有化対象分類ステップと、
前記アクセス属性決定ステップによる決定結果に基づいて前記キャッシュメモリを使用する処理、および、前記非共有化対象分類ステップによる決定結果に基づいて前記キャッシュラインを非共有化させる処理を、前記ソースプログラムに挿入し、前記処理を挿入したソースプログラムを出力する変換ステップと、
をコンピュータに実行させることを特徴とする変換プログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011245813A JP5687603B2 (ja) | 2011-11-09 | 2011-11-09 | プログラム変換装置、プログラム変換方法、および変換プログラム |
US13/422,054 US8688918B2 (en) | 2011-11-09 | 2012-03-16 | Program converting apparatus, program converting method, and medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011245813A JP5687603B2 (ja) | 2011-11-09 | 2011-11-09 | プログラム変換装置、プログラム変換方法、および変換プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2013101563A JP2013101563A (ja) | 2013-05-23 |
JP5687603B2 true JP5687603B2 (ja) | 2015-03-18 |
Family
ID=48224538
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011245813A Expired - Fee Related JP5687603B2 (ja) | 2011-11-09 | 2011-11-09 | プログラム変換装置、プログラム変換方法、および変換プログラム |
Country Status (2)
Country | Link |
---|---|
US (1) | US8688918B2 (ja) |
JP (1) | JP5687603B2 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2535826A1 (en) * | 2011-05-31 | 2012-12-19 | Research In Motion Limited | Method and system for data synchronization including file system abstraction |
US9165006B2 (en) | 2012-10-25 | 2015-10-20 | Blackberry Limited | Method and system for managing data storage and access on a client device |
US8943110B2 (en) | 2012-10-25 | 2015-01-27 | Blackberry Limited | Method and system for managing data storage and access on a client device |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5265232A (en) | 1991-04-03 | 1993-11-23 | International Business Machines Corporation | Coherence control by data invalidation in selected processor caches without broadcasting to processor caches not having the data |
JPH07129410A (ja) * | 1993-11-05 | 1995-05-19 | Fujitsu Ltd | コンパイラにおけるメモリ割り付け方法 |
US6421809B1 (en) | 1998-07-24 | 2002-07-16 | Interuniversitaire Micro-Elektronica Centrum (Imec Vzw) | Method for determining a storage bandwidth optimized memory organization of an essentially digital device |
JP2004030362A (ja) * | 2002-06-27 | 2004-01-29 | Fujitsu Ltd | ロードモジュール生成方法、ロードモジュール生成プログラムおよびロードモジュール生成装置 |
JP4047788B2 (ja) * | 2003-10-16 | 2008-02-13 | 松下電器産業株式会社 | コンパイラ装置およびリンカ装置 |
JP2006338616A (ja) * | 2005-06-06 | 2006-12-14 | Matsushita Electric Ind Co Ltd | コンパイラ装置 |
US8473934B2 (en) | 2005-07-15 | 2013-06-25 | Imec | Method for mapping applications on a multiprocessor platform/system |
JP2007156821A (ja) | 2005-12-05 | 2007-06-21 | Fujitsu Ltd | キャッシュシステム及び共用2次キャッシュ |
US20070180193A1 (en) | 2006-01-30 | 2007-08-02 | International Business Machines Corporation | History based line install |
EP2266026A4 (en) * | 2008-03-11 | 2012-01-11 | Univ Washington | MULTITRAITEMENT DETERMINISTIC EFFECTIVE |
JP2010140344A (ja) * | 2008-12-12 | 2010-06-24 | Toshiba Corp | コンパイルシステム及びコンパイル方法 |
JP5059174B2 (ja) | 2010-08-10 | 2012-10-24 | 株式会社東芝 | プログラム変換装置、およびそのプログラム |
JP5148674B2 (ja) * | 2010-09-27 | 2013-02-20 | 株式会社東芝 | プログラム並列化装置およびプログラム |
-
2011
- 2011-11-09 JP JP2011245813A patent/JP5687603B2/ja not_active Expired - Fee Related
-
2012
- 2012-03-16 US US13/422,054 patent/US8688918B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US8688918B2 (en) | 2014-04-01 |
JP2013101563A (ja) | 2013-05-23 |
US20130117512A1 (en) | 2013-05-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Hildebrand et al. | Autotm: Automatic tensor movement in heterogeneous memory systems using integer linear programming | |
Ozdal et al. | Energy efficient architecture for graph analytics accelerators | |
Zhou et al. | Accelerating graph analytics on CPU-FPGA heterogeneous platform | |
Tan et al. | Faster and cheaper: Parallelizing large-scale matrix factorization on GPUs | |
US8364909B2 (en) | Determining a conflict in accessing shared resources using a reduced number of cycles | |
TWI489385B (zh) | 一種用於預先擷取快取線的電腦實作方法與子系統 | |
Mukherjee et al. | A comprehensive performance analysis of HSA and OpenCL 2.0 | |
JP6432450B2 (ja) | 並列計算装置、コンパイル装置、並列処理方法、コンパイル方法、並列処理プログラムおよびコンパイルプログラム | |
CN108830777A (zh) | 用于全面同步执行线程的技术 | |
US9201806B2 (en) | Anticipatorily loading a page of memory | |
US20140215192A1 (en) | Heap data management for limited local memory(llm) multi-core processors | |
US7480768B2 (en) | Apparatus, systems and methods to reduce access to shared data storage | |
Nisa et al. | Parallel ccd++ on gpu for matrix factorization | |
US11226798B2 (en) | Information processing device and information processing method | |
JP2014225263A (ja) | プロセッシング装置及びプロセッシング方法 | |
US8479055B2 (en) | Detecting and optimizing false sharing | |
US9766926B2 (en) | Method and system for optimizing parallel program execution based on speculation that an object written to is not shared | |
Lu et al. | Accelerating exact constrained shortest paths on gpus | |
JP5687603B2 (ja) | プログラム変換装置、プログラム変換方法、および変換プログラム | |
Das et al. | Enabling on-device smartphone GPU based training: Lessons learned | |
JP2012247827A (ja) | プログラム生成装置、プログラム生成方法及びプログラム | |
JP2008003882A (ja) | コンパイラプログラム,リストベクトルの領域割当て最適化方法,コンパイル処理装置およびコンパイラプログラムを記録したコンピュータ読み取り可能な記録媒体 | |
Huynh et al. | TP-PARSEC: A task parallel PARSEC benchmark suite | |
Van Der Berg et al. | Concurrent chaining hash maps for software model checking | |
US11144428B2 (en) | Efficient calculation of performance data for a computer |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20140205 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20140922 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20141007 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20141204 |
|
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: 20141224 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20150122 |
|
LAPS | Cancellation because of no payment of annual fees |