JPH05324281A - アドレス割当変更方法 - Google Patents
アドレス割当変更方法Info
- Publication number
- JPH05324281A JPH05324281A JP4131227A JP13122792A JPH05324281A JP H05324281 A JPH05324281 A JP H05324281A JP 4131227 A JP4131227 A JP 4131227A JP 13122792 A JP13122792 A JP 13122792A JP H05324281 A JPH05324281 A JP H05324281A
- Authority
- JP
- Japan
- Prior art keywords
- cache
- address
- entry
- pages
- main memory
- 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.)
- Pending
Links
Abstract
(57)【要約】
【目的】情報処理装置上での情報処理プログラムを実行
する場合に、プログラムのアドレスを変えることでキャ
ッシュのヒット率を上げる。 【構成】処理プログラムをコンパイルする際、できたオ
ブジェクトファイルをアドレス変換ソフトウェアに通
し、キャッシュのヒット率が上がるようにメモリ上の配
置を行う。キャッシュの大きさや置換方式を考慮し、キ
ャッシュの各エントリが使われる頻度を同じくらいにす
る。 【効果】処理プログラムのキャッシュヒット率を上げ、
メモリ参照の回数を減らすことにより、処理にかかる総
時間を短縮するということができる。
する場合に、プログラムのアドレスを変えることでキャ
ッシュのヒット率を上げる。 【構成】処理プログラムをコンパイルする際、できたオ
ブジェクトファイルをアドレス変換ソフトウェアに通
し、キャッシュのヒット率が上がるようにメモリ上の配
置を行う。キャッシュの大きさや置換方式を考慮し、キ
ャッシュの各エントリが使われる頻度を同じくらいにす
る。 【効果】処理プログラムのキャッシュヒット率を上げ、
メモリ参照の回数を減らすことにより、処理にかかる総
時間を短縮するということができる。
Description
【0001】
【産業上の利用分野】本発明は情報処理プログラムをキ
ャッシュヒット率が上がるように最適化するアドレス割
当変更方法に関する。
ャッシュヒット率が上がるように最適化するアドレス割
当変更方法に関する。
【0002】
【従来の技術】図2は従来のアドレス割当変更方法を説
明するための図で、(a)はメモリのキャッシュへの割
当方法の一例を示し、(b)は具体的なルーチンの配置
の一例を示す。従来の情報処理プログラムにおいては、
図2(a)に示すようにソースを実行可能な状態にコン
パイルしてアドレスリンクを行う際に、ソースプログラ
ムを作成する都合上、ルーチンや複数のルーチン郡をペ
ージの頭に持ってくることが多かった。
明するための図で、(a)はメモリのキャッシュへの割
当方法の一例を示し、(b)は具体的なルーチンの配置
の一例を示す。従来の情報処理プログラムにおいては、
図2(a)に示すようにソースを実行可能な状態にコン
パイルしてアドレスリンクを行う際に、ソースプログラ
ムを作成する都合上、ルーチンや複数のルーチン郡をペ
ージの頭に持ってくることが多かった。
【0003】ここで、簡単のため4ページからなるメイ
ンメモリと、2ページ分のキャッシュがある場合を考え
る。キャッシュの置換え方式はダイレクトマップ方式
(アドレスの下位でキャッシュに入るエントリが決ま
る)とする。図2(b)は4ページのメインメモリ1の
各ページの頭に4つのルーチンA3,B4,C5および
D6が配置されたところを示している。このままだと、
キャッシュ2に入るとき、ルーチンA3とルーチンC
5、ルーチンB4とルーチンD6は重なってしまい、エ
ントリの奪い合いが起きる。もし4つのルーチンがA→
B→C→D→A→B→C→…などという順番に実行され
るものとすれば、キャッシュは毎回置き換えられてしま
うことになり、もはやキャッシュの存在する意味がなく
なる。
ンメモリと、2ページ分のキャッシュがある場合を考え
る。キャッシュの置換え方式はダイレクトマップ方式
(アドレスの下位でキャッシュに入るエントリが決ま
る)とする。図2(b)は4ページのメインメモリ1の
各ページの頭に4つのルーチンA3,B4,C5および
D6が配置されたところを示している。このままだと、
キャッシュ2に入るとき、ルーチンA3とルーチンC
5、ルーチンB4とルーチンD6は重なってしまい、エ
ントリの奪い合いが起きる。もし4つのルーチンがA→
B→C→D→A→B→C→…などという順番に実行され
るものとすれば、キャッシュは毎回置き換えられてしま
うことになり、もはやキャッシュの存在する意味がなく
なる。
【0004】
【発明が解決しようとする課題】この従来の方法では、
メモリに比べて通常かなり小さいものであるキャッシュ
にプログラムの一部をメモリからロードしてきてキャッ
シュエントリに割り当てる際に性能面で不都合が生じ
る。例えば小さいルーチンをひとつひとつ別のページの
頭から割り当てた場合、サブルーチンコールでさまざま
なルーチンに処理が飛ぶときにメモリ上ではページの頭
からページの頭へアクセスが移動することになる。メモ
リをアクセスするということは、まずキャッシュをアク
セスするというであり、キャッシュに目的のデータがあ
ればよいが、なければメモリから時間をかけてロードし
て来なければならない。
メモリに比べて通常かなり小さいものであるキャッシュ
にプログラムの一部をメモリからロードしてきてキャッ
シュエントリに割り当てる際に性能面で不都合が生じ
る。例えば小さいルーチンをひとつひとつ別のページの
頭から割り当てた場合、サブルーチンコールでさまざま
なルーチンに処理が飛ぶときにメモリ上ではページの頭
からページの頭へアクセスが移動することになる。メモ
リをアクセスするということは、まずキャッシュをアク
セスするというであり、キャッシュに目的のデータがあ
ればよいが、なければメモリから時間をかけてロードし
て来なければならない。
【0005】キャッシュの置換アルゴリズムにもよるが
ハード性能上よく使用されるダイレクトマップ方式やセ
ットアソシアティブ方式のキャッシュでは、アドレスの
下位によってキャッシュエントリが決定されるので、メ
インメモリは周期的にキャッシュに割り当てられる。そ
のようなキャッシュにおいて、プログラムはいつもペー
ジの頭ばかり使っているとなれば、同じエントリばかり
使ってしまうことになる。置換えのため時間をかけてメ
インメモリからロードして来ても、すぐにほかのルーチ
ンのデータで書き換えられてしまい、再度使おうとする
ときにはまたロードして来なければならないという問題
点があった。
ハード性能上よく使用されるダイレクトマップ方式やセ
ットアソシアティブ方式のキャッシュでは、アドレスの
下位によってキャッシュエントリが決定されるので、メ
インメモリは周期的にキャッシュに割り当てられる。そ
のようなキャッシュにおいて、プログラムはいつもペー
ジの頭ばかり使っているとなれば、同じエントリばかり
使ってしまうことになる。置換えのため時間をかけてメ
インメモリからロードして来ても、すぐにほかのルーチ
ンのデータで書き換えられてしまい、再度使おうとする
ときにはまたロードして来なければならないという問題
点があった。
【0006】
【課題を解決するための手段】本発明のアドレス割当変
更方法は、CPUの周辺または内部にキャッシュを搭載
した情報処理装置上で走る情報処理ソフトウェアをソー
スプログラムの状態からコンパイルしてメモリ上のアド
レスを決定するリンク作業の際に前記キャッシュの大き
さおよび置換方式を考慮して前記アドレスを決めること
により前記キャッシュの同じエントリをリプレースする
機会が最小になるように最適化することを特徴とする。
更方法は、CPUの周辺または内部にキャッシュを搭載
した情報処理装置上で走る情報処理ソフトウェアをソー
スプログラムの状態からコンパイルしてメモリ上のアド
レスを決定するリンク作業の際に前記キャッシュの大き
さおよび置換方式を考慮して前記アドレスを決めること
により前記キャッシュの同じエントリをリプレースする
機会が最小になるように最適化することを特徴とする。
【0007】
【作用】本発明のアドレス割当変更方法では、コンパイ
ル後に、アドレス割当の変更を行う。変更はアドレス割
当変更ソフトウェアで行い、対象はプログラムを通常の
コンパイラ,リンカでコンパイルしたオブジェクトファ
イルである。このオブジェクトファイルは通常の方法で
メインメモリにおけるアドレスが決定されているが、ア
ドレス割当変更ソフトウェアはそのアドレスを解析して
キャッシュのエントリの使用率が平均になるようにアド
レス割当を変更する。
ル後に、アドレス割当の変更を行う。変更はアドレス割
当変更ソフトウェアで行い、対象はプログラムを通常の
コンパイラ,リンカでコンパイルしたオブジェクトファ
イルである。このオブジェクトファイルは通常の方法で
メインメモリにおけるアドレスが決定されているが、ア
ドレス割当変更ソフトウェアはそのアドレスを解析して
キャッシュのエントリの使用率が平均になるようにアド
レス割当を変更する。
【0008】
【実施例】次に、本発明について図面を参照して説明す
る。図1は本発明のアドレス割当変更方法の一実施例を
説明するための図である。簡単のため、4ページからな
るメインメモリ1と、2ページ分のキャッシュ2がある
場合を考える。キャッシュ2の置換え方式はダイレクト
マップ方式とする。
る。図1は本発明のアドレス割当変更方法の一実施例を
説明するための図である。簡単のため、4ページからな
るメインメモリ1と、2ページ分のキャッシュ2がある
場合を考える。キャッシュ2の置換え方式はダイレクト
マップ方式とする。
【0009】本実施例においては情報処理ソフトウェア
をソースプログラムの状態から通常のコンパイラでコン
パイルし、通常のリンカでメインメモリ1上のアドレス
を決定する。アドレス割当変更ソフトウェアはキャッシ
ュ2の大きさ(2ページ分)を考慮してルーチンA3,
ルーチンB4,ルーチンC5およびルーチンD6のアド
レス配置を図1に示すように変更し、キャッシュ2のエ
ントリが使用される回数をできるだけ同じにする。
をソースプログラムの状態から通常のコンパイラでコン
パイルし、通常のリンカでメインメモリ1上のアドレス
を決定する。アドレス割当変更ソフトウェアはキャッシ
ュ2の大きさ(2ページ分)を考慮してルーチンA3,
ルーチンB4,ルーチンC5およびルーチンD6のアド
レス配置を図1に示すように変更し、キャッシュ2のエ
ントリが使用される回数をできるだけ同じにする。
【0010】このようにすると、キャッシュ2のエント
リは別のところを使用することになり、エントリの奪い
合いは起こらない。
リは別のところを使用することになり、エントリの奪い
合いは起こらない。
【0011】なお、本実施例ではダイレクトマップ方式
のキャッシュについて説明したが、本発明はセットアソ
シアティブ方式のキャッシュにも適用することができ
る。
のキャッシュについて説明したが、本発明はセットアソ
シアティブ方式のキャッシュにも適用することができ
る。
【0012】
【発明の効果】以上説明したように本発明は、ソースプ
ログラムの状態からコンパイルして、メインメモリ上の
アドレスを決定するリンク作業において、キャッシュの
大きさ,方式を考慮してアドレスを決めることにより、
キャッシュの同じエントリをリプレースする機会が最小
になるように最適化するので、キャッシュのヒット率を
上げ、処理プログラムの総実行時間を短縮できるという
効果を有する。
ログラムの状態からコンパイルして、メインメモリ上の
アドレスを決定するリンク作業において、キャッシュの
大きさ,方式を考慮してアドレスを決めることにより、
キャッシュの同じエントリをリプレースする機会が最小
になるように最適化するので、キャッシュのヒット率を
上げ、処理プログラムの総実行時間を短縮できるという
効果を有する。
【図1】本発明のアドレス割当変更方法の一実施例を説
明するための図である。
明するための図である。
【図2】従来のアドレス割当方法を説明するための図で
ある。
ある。
1 メインメモリ 2 キャッシュ 3 ルーチンA 4 ルーチンB 5 ルーチンC 6 ルーチンD
Claims (1)
- 【請求項1】 CPUの周辺または内部にキャッシュを
搭載した情報処理装置上で走る情報処理ソフトウェアを
ソースプログラムの状態からコンパイルしてメモリ上の
アドレスを決定するリンク作業の際に前記キャッシュの
大きさおよび置換方式を考慮して前記アドレスを決める
ことにより前記キャッシュの同じエントリをリプレース
する機会が最小になるように最適化することを特徴とす
るアドレス割当変更方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP4131227A JPH05324281A (ja) | 1992-05-25 | 1992-05-25 | アドレス割当変更方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP4131227A JPH05324281A (ja) | 1992-05-25 | 1992-05-25 | アドレス割当変更方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH05324281A true JPH05324281A (ja) | 1993-12-07 |
Family
ID=15053000
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP4131227A Pending JPH05324281A (ja) | 1992-05-25 | 1992-05-25 | アドレス割当変更方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH05324281A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6625806B1 (en) | 1998-01-26 | 2003-09-23 | Nec Electronics Corporation | Language processing method and language processing system improving use efficiency of cache memory |
US7478199B2 (en) | 2004-03-16 | 2009-01-13 | Fujitsu Limited | Cache coloring based on dynamic function flow |
WO2010010678A1 (ja) * | 2008-07-22 | 2010-01-28 | パナソニック株式会社 | プログラム最適化方法 |
-
1992
- 1992-05-25 JP JP4131227A patent/JPH05324281A/ja active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6625806B1 (en) | 1998-01-26 | 2003-09-23 | Nec Electronics Corporation | Language processing method and language processing system improving use efficiency of cache memory |
US7478199B2 (en) | 2004-03-16 | 2009-01-13 | Fujitsu Limited | Cache coloring based on dynamic function flow |
WO2010010678A1 (ja) * | 2008-07-22 | 2010-01-28 | パナソニック株式会社 | プログラム最適化方法 |
JP2010026851A (ja) * | 2008-07-22 | 2010-02-04 | Panasonic Corp | コンパイラによる最適化方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Chow et al. | The priority-based coloring approach to register allocation | |
US5862385A (en) | Compile method for reducing cache conflict | |
CA2205797C (en) | A system for local context spilling for graph colouring register allocators | |
US5946491A (en) | Register allocation method and apparatus for gernerating spill code as a function of register pressure compared to dual thresholds | |
KR101360512B1 (ko) | 기록 마스크를 사용하는 simd 아키텍처에 의한 레지스터 할당 | |
JPH05204656A (ja) | スレッド固有データ保持方法 | |
US8161467B2 (en) | Compiling method and storage medium therefor | |
JP2001147819A (ja) | 最適化装置および記録媒体 | |
JP2001109661A (ja) | キャッシュメモリの割当方法及びオペレーティングシステム及びそのオペレーティングシステムを有するコンピュータシステム | |
US5774730A (en) | Method and apparatus for improving colorability of constrained nodes in an interference graph within a computer system | |
JP2000347874A (ja) | レジスタ割当器を用いた呼出規則プロローグ・エピローグコード構築方法及び装置 | |
US7089557B2 (en) | Data processing system and method for high-efficiency multitasking | |
JP2002342163A (ja) | マルチスレッドプロセッサ用キャッシュ制御方式 | |
US6129458A (en) | Cache optimization method | |
Chen et al. | Register allocation for intel processor graphics | |
WO1998025202A1 (en) | Cooperation of global and local register allocators for better handling of big procedures | |
US5940621A (en) | Language independent optimal size-based storage allocation | |
JPH06223043A (ja) | 分散メモリ型プロセッサシステム | |
JP3141836B2 (ja) | 言語処理方法、言語処理装置及び言語処理プログラムを記録した記憶媒体 | |
JPH05324281A (ja) | アドレス割当変更方法 | |
CN111435309A (zh) | 一种寄存器分配优化实现方法 | |
Zhuang et al. | Balancing register allocation across threads for a multithreaded network processor | |
US6173443B1 (en) | Method of compiling a loop | |
JPH08190537A (ja) | マルチプロセッサシステム及びプロセススケジューリング方法 | |
JP3296027B2 (ja) | ロードストア型プロセッサの付加的レジスタを利用する際のコンパイル方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 19981104 |