JPH05120029A - 最適化方法 - Google Patents

最適化方法

Info

Publication number
JPH05120029A
JPH05120029A JP3282690A JP28269091A JPH05120029A JP H05120029 A JPH05120029 A JP H05120029A JP 3282690 A JP3282690 A JP 3282690A JP 28269091 A JP28269091 A JP 28269091A JP H05120029 A JPH05120029 A JP H05120029A
Authority
JP
Japan
Prior art keywords
loop
size
expansion
instruction cache
cache
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
Application number
JP3282690A
Other languages
English (en)
Inventor
Takeshi Horiuchi
毅 堀内
Sumio Kikuchi
純男 菊池
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP3282690A priority Critical patent/JPH05120029A/ja
Publication of JPH05120029A publication Critical patent/JPH05120029A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

(57)【要約】 【目的】ループに係る最適化において、命令キャッシュ
(IC)の大きさを超えないようにコードを生成し、実
行時のICのフラッシュを減らしたオブジェクトコード
(OC)を得る。 【構成】コンパイラの最適化処理部の中に図1のような
コード見積もり手段1、およびループ分割可否判定手段
6を設け、対象ループのOCがICサイズよりも大きい
場合に、6,7,8によりループ分割を試みる。また、
対象ループがICサイズより小さく、そのループの展開
やル−プ内の関数または手続きのインライン展開が必要
な場合で、かつ、その展開後のそのループのOCがIC
サイズより小さい場合にのみ、目的とする展開処理を行
う。 【効果】実行時のICのフラッシュが少なくなり、プロ
グラムの実行時間が短くなる。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は命令キャッシュを持つ計
算機の目的プログラムを生成するコンパイラにおける最
適化方法に関する。
【0002】
【従来の技術】プログラムの実行時間を短くするコンパ
イラの最適化技術として、ループ展開や関数および手続
きのインライン展開があることが、中田育男著「コンパ
イラ」(昭和58年,産業図書)に記載されている。
【0003】
【発明が解決しようとする課題】上記の従来技術では、
命令キャッシュのヒット率について考慮されておらず、
命令キャッシュのフラッシュが頻発するようになるとプ
ログラムの実行時間が長くなるという問題があった。す
なわち、上記のループ展開やインライン展開は、コード
量を増大させるという副作用があり、そのため生成され
る目的プログラムまたはその部分であるループに係るコ
ードの量が命令キャッシュの大きさを超えた場合に命令
キャッシュのフラッシュが頻発するようになるためプロ
グラムの実行時間が長くなる。また、ループの本体が元
々大きくて命令キャッシュに入りきれない場合にもフラ
ッシュの頻発のためプログラムの実行時間が長くなる。
【0004】本発明の第1の目的は、上記の問題点を解
消するため命令キャッシュの容量を考慮してループ展開
やループ内の関数および手続きのインライン展開を行う
最適化方法を提供することにある。
【0005】第2の目的は、ループの本体が命令キャッ
シュの容量より大きい場合に可能であれば、キャッシュ
の容量以下の大きさのループへの分割を行う最適化方法
を提供することにある。
【0006】
【課題を解決するための手段】上記第1の目的達成のた
め、本発明の最適化方法では、コンパイル時にループ展
開やループ内のインライン展開をしようとする部分のオ
ブジェクト量を見積もる手段を設け、ループ展開やイン
ライン展開の採否を決定し、さらにループ展開の展開倍
率を制限することにより達成される。
【0007】また、第2の目的達成のために、ループの
オブジェクト量を見積もる手段とループ分割可否判定手
段とを設けることによって、キャッシュ容量より大きな
ループをより小さい単位に分割することにより達成され
る。
【0008】
【作用】本発明において、第1の観点では、オブジェク
トの量を見積もる手段によってループ展開しようとする
ループから生成されるコード量を見積もり、その大きさ
と命令キャッシュのサイズとを比較して展開の結果生成
されるループのコードの大きさがキャッシュのサイズを
超えないように展開を制限する。またインライン展開し
ようとするループ内の手続きや関数の大きさを見積もる
ことにより、インライン展開した結果生成されるループ
のコードの大きさがキャッシュのサイズを超る場合にそ
の展開を抑止する。これらによって、生成されるループ
のオブジェクトがキャッシュに入らなくなることを防ぐ
ことができる。
【0009】第2の観点では、ループに係るオブジェク
ト量を見積もった結果、キャッシュサイズよりも大きい
と判断された場合に、データ依存解析を用いてそのルー
プが分割可能か否かを判定し、可能な場合に分割処理を
行う。これによって、ループがそれぞれキャッシュに入
る部分に分割できた場合に、命令キャッシュのヒット率
を高くすることができる。
【0010】
【実施例】以下、本発明の一実施例を図1,2を用いて
説明する。なお、本実施例によって本発明が限定される
ものではない。
【0011】まず、図2でコンパイラの処理の流れを説
明する。コンパイラの本体11への入力である原始プロ
グラム10は、構文解析部12で処理をされた後、コー
ド生成部13の入力となる。このコード生成部13は、
最適化処理部14を含む。その最適化処理部14の中に
は従来の最適化処理方法の他に本発明のキーとなるルー
プに関する最適化処理方法(図1)が含まれており、こ
こでの処理を受けることによって、出力である効率等が
改善された目的プログラム15となる。
【0012】次に、図1でループに関する最適化処理方
法について説明する。ここで、1は生成するオブジェク
トの大きさを見積もる手段、2は見積もったループのオ
ブジェクトの大きさとキャッシュサイズとを比較し分岐
する手段、3はそのループがループ展開する候補である
か否か、またはそのループ内に手続か関数のインライン
展開をする候補があるか否かを判定し分岐をする手段で
ある。そして、4はループ展開やインライン展開を行っ
た場合に対象としているループのオブジェクトの大きさ
が命令キャッシュの大きさより小さいか否かを判定し分
岐する手段、5は候補であったループ展開または関数や
手続のインライン展開を行う手段である。さらに6は、
例えばデータ依存解析等を用いてループが分割できるか
否かを判定する手段、7は判定手段6の結果によって分
岐を行う手段、そして8は対象としていたループの分割
を行う手段である。
【0013】処理の詳細は、まずループに関する処理に
はいると、1でそのループ全体のオブジェクト量がどの
位になるかを見積もり、2でそれが命令キャッシュの大
きさより大きいかどうかを判定する。キャッシュサイズ
より大きい場合には、6によってより小さいループに分
割できないかどうかを調べ、7の分岐手段により分割が
可能な時には8の処理に分岐し、そのループをキャッシ
ュサイズより小さくなるようなループに分割をして処理
を終る。具体的には、図3に示したように、1つのルー
プ31を、32のように同じ長さの2つのループに分割
する。
【0014】また、2でキャッシュサイズより小さいと
判定された場合は、3の処理に行き、そのループが最適
化の対象としてループ展開の候補となっているか、また
は、そのループの中にインライン展開をしようとしてい
る関数か手続きの呼出しがあるかどうかを判定し、なけ
れば処理を終了する。ループ展開の候補であるか、また
はインライン展開の候補である関数か手続きの呼出しが
含まれている場合には、1の手段を用いてその展開をし
た後のループ全体のオブジェクト量を見積もる。そし
て、その結果として展開してもまだキャッシュのサイズ
を超えないと4で判定された時にのみ、5で実際にルー
プ展開や関数または手続きのインライン展開を行い、展
開することによりオブジェクトの大きさが命令キャッシ
ュの大きさを超えることになる場合にはその展開を行わ
ない。具体的には、ループ展開では図4のように、ルー
プ41を、42のようなループに変換する。また、イン
ライン展開では、図5の52のように、関数や手続きの
呼出しがある部分に、その定義を展開する。
【0015】
【発明の効果】本発明によれば、ループに係るオブジェ
クトの大きさを命令キャッシュのサイズ以下に抑えるこ
とにより、命令キャッシュのミスヒットを少なくするこ
とができるので、プログラムの実行時間を短くすること
ができるという効果がある。
【図面の簡単な説明】
【図1】本発明のキーとなる部分の流れ図である。
【図2】本発明の一実施例を示すブロック図である。
【図3】ループ分割を説明する図である。
【図4】ループ展開を説明する図である。
【図5】インライン展開を説明する図である。
【符号の説明】
1…対象とするループから生成されるオブジェクトの量
を見積もる手段、2…見積もったオブジェクトの量が命
令キャッシュサイズより大か否かを判定する手段、4…
展開後のオブジェクトの量と命令キャッシュサイズとの
比較により展開を実際に行うか否かを決める判断、6…
ループが分割できるかどうかを判定する手段。

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】命令キャッシュを持つ計算機の目的プログ
    ラムを生成するコンパイラにおいて、ループ展開又はル
    ープ内関数および手続のインライン展開をするにあた
    り、その展開する部分のオブジェクトの大きさを見積も
    り、その大きさが命令キャッシュの大きさを超えないよ
    うにコンパイルすることを特徴とする最適化方法。
  2. 【請求項2】命令キャッシュを持つ計算機の目的プログ
    ラムを生成するコンパイラにおいて、生成するオブジェ
    クトの大きさを見積もりし、ループの部分のオブジェク
    トの大きさを見積もり、その大きさが命令キャッシュの
    大きさを超えている場合に、そのループを分割してから
    オブジェクトに変換することを特徴とする最適化方法。
JP3282690A 1991-10-29 1991-10-29 最適化方法 Pending JPH05120029A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP3282690A JPH05120029A (ja) 1991-10-29 1991-10-29 最適化方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP3282690A JPH05120029A (ja) 1991-10-29 1991-10-29 最適化方法

Publications (1)

Publication Number Publication Date
JPH05120029A true JPH05120029A (ja) 1993-05-18

Family

ID=17655791

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3282690A Pending JPH05120029A (ja) 1991-10-29 1991-10-29 最適化方法

Country Status (1)

Country Link
JP (1) JPH05120029A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005122506A (ja) * 2003-10-17 2005-05-12 Matsushita Electric Ind Co Ltd コンパイラ装置
US9760354B2 (en) 2015-04-28 2017-09-12 Fujitsu Limited Information processing apparatus and compiling method
JP2021111136A (ja) * 2020-01-10 2021-08-02 富士通株式会社 情報処理装置、情報処理プログラム、及び情報処理方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005122506A (ja) * 2003-10-17 2005-05-12 Matsushita Electric Ind Co Ltd コンパイラ装置
US9760354B2 (en) 2015-04-28 2017-09-12 Fujitsu Limited Information processing apparatus and compiling method
JP2021111136A (ja) * 2020-01-10 2021-08-02 富士通株式会社 情報処理装置、情報処理プログラム、及び情報処理方法

Similar Documents

Publication Publication Date Title
US6192515B1 (en) Method for software pipelining nested loops
CA1319757C (en) Echelon method for execution of nested loops in multiple processor computers
US7784039B2 (en) Compiler, compilation method, and compilation program
US20010047511A1 (en) Method of reducing unnecessary barrier instructions
US6044221A (en) Optimizing code based on resource sensitive hoisting and sinking
JP3546341B2 (ja) 多重ループ向けデータプリフェッチ方法およびプログラム生成方法
JP3721780B2 (ja) 複数のパイプライン処理機構を有するデータ処理装置
US20010020294A1 (en) Optimization apparatus that decreases delays in pipeline processing of loop and computer-readable storage medium storing optimization program
JPH05120029A (ja) 最適化方法
JP3606654B2 (ja) コンパイラ装置
JPH06202875A (ja) インライン展開による最適化を行うコンパイラ
JP3702789B2 (ja) 条件付きベクトル演算方法および条件付きベクトル演算装置
JP2005352894A (ja) 性能解析プログラム及び性能解析プログラムの生成方法
JP3486014B2 (ja) ソフトウェア/ハードウェア協調設計システム及びその設計方法
JP2585793B2 (ja) コンパイラシステム
JPH0573335A (ja) プログラムの自動インライン展開方式
JP3956113B2 (ja) データ処理装置及びプログラム
JPH10326193A (ja) インライン展開関数の最適化のためのコンパイル方法
JPH10312291A (ja) コンパイラ装置
JP3324486B2 (ja) ループ最適化方式およびそのプログラム記録媒体
JP2832330B2 (ja) ソフトウェア改造支援装置および方法
JPH04165537A (ja) プログラム自動インライン展開方式
KR0179179B1 (ko) 비동기 전달모드 프로세서를 위한 최적 명령 수순 선택 방법
JPH04252336A (ja) プログラム最適化処理装置
JPH06214800A (ja) 目的プログラムの最適化処理システム