JPH04307625A - ループ最適化方法及び装置 - Google Patents

ループ最適化方法及び装置

Info

Publication number
JPH04307625A
JPH04307625A JP3071979A JP7197991A JPH04307625A JP H04307625 A JPH04307625 A JP H04307625A JP 3071979 A JP3071979 A JP 3071979A JP 7197991 A JP7197991 A JP 7197991A JP H04307625 A JPH04307625 A JP H04307625A
Authority
JP
Japan
Prior art keywords
loop
operations
program
instructions
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
Application number
JP3071979A
Other languages
English (en)
Other versions
JP3032031B2 (ja
Inventor
Atsushi Inoue
淳 井上
Kenji Shirakawa
健治 白川
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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP3071979A priority Critical patent/JP3032031B2/ja
Priority to US07/863,709 priority patent/US5303357A/en
Publication of JPH04307625A publication Critical patent/JPH04307625A/ja
Application granted granted Critical
Publication of JP3032031B2 publication Critical patent/JP3032031B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/451Code distribution
    • G06F8/452Loops

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Advance Control (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】
[発明の目的]
【0001】
【産業上の利用分野】本発明は、複数の命令の列を並列
に実行可能である電子計算機におけるループ最適化方式
に関する。
【0002】
【従来の技術】従来、電子計算機の命令列は逐次処理さ
れることを前提に構成され、電子計算機はこれに従って
命令を1個ずつ取り出して実行していた。
【0003】この命令列の処理高速化のため、パイプラ
イン技術が導入された。これは命令の実行を複数の段階
(ステージ)に分解し、この分解された実行段階を単位
として、異なる段階の複数の命令を同時に演算する技術
であり、これにより処理のサイクルタイム短縮が可能と
なり命令列全体の処理時間も短縮された。しかし、パイ
プライン技術においても実行開始される命令は1サイク
ルあたり1個であり、これを超えた命令の並列実行は行
われていなかった。
【0004】これに対し、近年、命令単位で並列実行を
可能とする技術が導入されており、1サイクルあたり1
個以上の命令を処理することが可能になってきている。 VLIW(Very Long  Instructi
on Word) 技術とスーパースカラー技術と呼ば
れる2つの手法が代表的なものである。
【0005】VLIW技術は、予め定められた数の複数
命令を1つの実行単位として定義し、計算機はこれら複
数の命令を必ず同時に実行する。計算機は処理対象の複
数命令が同時に実行可能であるか否かを判定する必要が
なく制御が単純であるため、少ないハードウェア量で実
現可能であり、またサイクルタイムの短縮が可能である
。しかしながら、処理の並列性はコンパイラまたは人手
により判定し、予め命令の割当を行っておかなければな
らない。
【0006】一方スーパースカラー技術は、従来と同様
の逐次実行を前提とした命令列を解釈して並列実行可能
性を調べるハードウェアを備え、並列実行可能な場合に
はこれらの複数命令を並列実行するように制御する方式
である。この方式では命令の並列実行可能性判定を専用
ハードウェアに委ねているため、通常のプログラムであ
っても逐次実行時との互換性を保った実行は保証される
。しかし実際にスーパースカラー方式で性能向上を目指
す場合には、ハードウェアリソースやデータ依存性等の
情報を元に演算ユニットが出来る限り動作状態にあるよ
うにするため、VLIW方式と同様の命令並べ替えを行
っておくことが必須である。
【0007】これらの並列実行方式において、特にプロ
グラム中のループ部分を高速化するための命令並べ替え
方式としては、ループの反復1回分を固有のハードウェ
アリソースに割り当てて仮想的に複数のループ反復を個
別の処理ユニットを用いてパイプライン的に同時実行す
る「ソフトウェアパイプライニング(Software
 Pipelining) 」と呼ばれる方式が知られ
ている。
【0008】例えば浮動小数点ユニット1個、メモリ(
ロード、ストア)ユニット1個、整数ユニット1個、分
岐ユニット1個から構成されるVLIW計算機でソフト
ウェアパイプライニング実行することを仮定する。また
浮動小数点加算、乗算命令は2サイクルの遅延があるも
のと仮定する。C言語で記述したループ図2(a) を
考える。このループはスカラー変数b,cが既にレジス
タ上にロードされているとすれば、 (1) A[i]のロード (2) A[i]*bの乗算 (3) A[i]*b+cの加算 (4) 結果のストア
【0009】の4段階の処理で1回のループ反復が終了
する。従って従来の逐次計算機における命令列は図2(
b) のようになる。ソフトウェアパイプライニングで
は、この各段階を独立のユニットで処理するので、各ク
ロックでの実行状態は図2(c) のようになる。クロ
ック7、8がループ実行の定常状態でk回目反復のlo
ad, mul 、k+2回目反復のadd 、k+3
回目反復のstore が多重化して処理される。この
ようなソフトウェアパイプライニング処理により、ハー
ドウェアの持つ複数のユニット(加算、乗算、ロード、
ストア)を遊ばせることなく効率の良いループ処理が可
能になる。このような命令並べ替え方式をソースプログ
ラムに手を加えることなくコンパイラ内部で処理するこ
とが、VLIW、スーパースカラー方式においては必要
となる。
【0010】さて、図2のループの例ではソフトウェア
パイプライニングを適用することで効率の良い命令並べ
替えが実現できたが、それでもプロセッサの持つ最大の
並列化性能が得られるとは限らない。その理由は次の通
りである。
【0011】図2(c) で’ー’で示される部分は演
算の遅延サイクルであるが、一般にVLIW、スーパー
スカラー方式では各処理ユニットはパイプライン制御さ
れる場合が多いので、実際にはこのサイクルにも別の独
立な演算命令があれば、それを処理ユニットに供給する
ことが可能である。もしそのような命令を遅延サイクル
に挿入できればさらに並列化性能を高くできるが、この
例では適当な演算がない。このように、元のループ自身
の処理内容が単純すぎる場合、命令の空きスロットがあ
ってもそこに入れられる演算命令がなく最大限の並列性
が得られないことがある。
【0012】例えば、図3(a) のループは、ループ
内で1つの加算しか行わない単純なループである。これ
に対応する命令列は図3(b) のようになるが、これ
に3段のソフトウェアパイプライニングを行っても、図
3(c) のような実行状態しか作れない。この場合は
、加算の遅延サイクル2クロック内にも別の独立な加算
演算を供給することが可能であるにもかかわらず、実行
対象の命令がないために2クロックを無駄に浪費してし
まう。従ってこのようなループを処理する場合は、ソフ
トウェアパイプライニングをそのまま施してもVLIW
、スーパースカラー計算機の持つ複数の演算ユニットを
最大限有効に利用した並列処理は不可能である。
【0013】このようにソフトウェアパイプライニング
によるループ最適化を行うと、ループ反復1回内の演算
命令数、メモリアクセス命令数、プロセッサの持つ演算
ユニット数などがうまくマッチしている場合については
効率の良い並列実行が可能であるが、一方でループ自身
の持つ演算数が少ないような場合には、プロセッサ内の
演算ユニットに余りが生じてしまい、並列化効果が高く
できなくなってしまうという欠点があった。
【0014】
【発明が解決しようとする課題】このように、従来、V
LIW、スーパースカラー方式用に提案されているソフ
トウェアパイプライニングによるループ最適化方式では
、プロセッサの持つ演算ユニット数に対しプログラムの
ループ自体の持つ演算数が小さい場合にはプロセッサの
持つ演算ユニットの全てを使用した並列実行が行えず、
充分な並列処理性能が得られないという問題があった。
【0015】本発明は、このような事情を考慮してなさ
れたものであり、その目的とするところは、プログラム
内の各ループ内部の演算数に依らず充分な並列化性能を
実現できるループ最適化方式を提供することにある。 [発明の構成]
【0016】
【課題を解決するための手段】本発明に係るループ最適
化方式は、処理対象ループ内の演算数やデータ参照関係
を元にループの展開可能性を判定するループ解析部と、
このループ解析部の結果を元にループ展開処理を行うル
ープ展開部と、展開されたループに対してソフトウェア
パイプライン処理を施すループ最適化部を、具備し、各
ループの演算数、アクセスパターンに応じて前処理を施
したうえでループ部分の最適化を行うことを特徴とする
ものである。
【0017】
【作用】本発明によれば、予めプログラム内の各ループ
部分内の演算数やデータ参照数、データ参照関係から、
従来のソフトウェアパイプライニングをそのまま適用し
てもループ内演算数とプロセッサの演算ユニット数が不
適合で充分な並列化性能が得られない場合を検出して、
このようなループに対しては予めループの反復を展開す
る処理を施すことにより、ループの1反復の演算数を増
加したうえでソフトウェアパイプライニングを行うので
、従来方式では充分な並列化性能を得られないループで
あっても高い並列化性能を持つようにできる。
【0018】
【実施例】以下、図面に基づいて本発明の一実施例につ
いて説明する。
【0019】図1は本発明の一実施例に係るループ最適
化方式を適用したコンパイラの構成を示す図である。コ
ンパイラは、プログラム入力部21、構文解析部22、
ループ抽出部23、ループ解析部24、ループ展開部2
5、ループ最適化部26、コード生成部27より構成さ
れている。
【0020】プログラム入力部21で読み込まれたソー
スプログラムは構文解析部22で中間テキストに変換さ
れてループ抽出部23に入力される。ループ抽出部23
は入力された中間テキストを調べ、プログラム内のルー
プ部分を検出して取り出し、この内容をループ解析部2
4に渡す。
【0021】ループ解析部24はループ内に現れる演算
命令数、メモリアクセス命令数を調べ、このループを直
接ソフトウェアパイプライニングして充分な性能が得ら
れるかどうかを判定する。この際の判定基準としては、
(1) ループ内の演算命令数が一定個数より小さい場
合にループ展開する (2) ループ内の演算命令個数のメモリアクセス命令
個数に対する比率が一定値より小さい場合にループ展開
する(3) ループ内の演算命令数のプロセッサの持つ
演算ユニット個数に対する比率が一定値より小さい場合
にループ展開する などが考えられるが、この判定基準は個々のプロセッサ
の演算命令性能(各演算の遅延が何クロックか)やユニ
ット構成等に応じて自由に設定して構わない。
【0022】またループ解析部24ではループ展開を行
った場合に反復間で逐次実行が必要となるデータ参照関
係がないかどうかも同時に解析する。この解析には、ル
ープ内の左辺、右辺に共通に現れる配列の添字式を調べ
て両者が共通の値を取りうるか否かを調べるデータ依存
解析の手法を使用すればよい。例えば図5に示すループ
はk回目反復の結果をk+1回目で使用するため、ルー
プ反復は本質的に逐次実行である。このようなデータ参
照関係がある場合はループ展開を行っても独立な演算命
令が増加しないので展開は行わず、ループ最適化部26
で直接ソフトウェアパイプライニングするものとする。 以上のような基準に基づいて、ループ解析部24がルー
プを展開すべきであると判定した場合はループ展開部2
5でループ展開が実行される。
【0023】例えば、図3(a) に示すループがルー
プ展開条件を満足した場合を仮定すると、ループ展開部
25はループ展開を施して図4(a) に等価なループ
形式に変換する。この場合ループ展開段数は2段として
いるが、展開段数はプロセッサの構成やコンパイル時間
、オブジェクトコードサイズの制約に応じて自由に定め
て良い。 ループ展開部25で図4(a) のように変換されたル
ープに対する命令列は図4(b) のようになるが、こ
れをループ最適化部26によりソフトウェアパイプライ
ニングすると図4(c) のように実行できる。図3(
c) と図4(c) を比較すると、図4ではadd 
命令後に別の演算のためのld/st 命令が入ってい
るので、図3の場合に見られた演算遅延サイクルでの空
きスロットがなくなっている。このように処理すればプ
ロセッサの持つ複数の処理ユニットを有効に使用した並
列処理が可能である。このようにしてループ最適化され
た中間テキストはコード生成部27により機械語に翻訳
されオブジェクトプログラムとして出力される。
【0024】
【発明の効果】かくして本発明によれば、予めプログラ
ム内の各ループにおける演算数やデータ参照数、データ
参照関係から、従来のソフトウェアパイプライニングを
そのまま適用してもループ内演算数とプロセッサの演算
ユニット数が不適合で充分な並列化性能が得られない場
合を検出して、このようなループに対しては予めループ
反復を展開する前処理を施すことにより、ループの1反
復内の演算数を増加させて、演算ユニット数と演算数と
の適合性をとったうえでソフトウェアパイプライニング
を行うので、従来方式では充分な並列化性能を得られな
かったループに対しても高い並列化性能を得られ、VL
IW、スーパースカラー方式におけるループ処理の効率
向上を図ることのできるループ最適化方式を実現できる
【図面の簡単な説明】
【図1】  本発明の一実施例に係るループ最適化方式
を適用したコンパイラの構成を示す図。
【図2】  (a) は本発明に係るループ最適化方式
の処理対象となるループを示すソースプログラム、(b
) は(a) のプログラムを従来の逐次計算機の命令
列に翻訳したアセンブラプログラム、(c) は(a)
にソフトウェアパイプライニングを施した場合の実行状
態を示す図。
【図3】  (a) は本発明に係るループ最適化方式
の処理対象となるループを示すソースプログラム、(b
) は(a) のプログラムを従来の逐次計算機の命令
列に翻訳したアセンブラプログラム、(c) は(a)
にソフトウェアパイプライニングを施した場合の実行状
態を示す図。
【図4】  (a) は図3(a) のプログラムに本
発明のループ最適化方式によりループ反復を展開する前
処理を施したループを示すソースプログラム、(b) 
は(a) のプログラムを従来の逐次計算機の命令列に
翻訳したアセンブラプログラム、(c)は(a) にソ
フトウェアパイプライニングを施した場合の実行状態を
示す図。
【図5】  本発明のループ解析部でループ展開が不適
当であると判定されるループを示すソースプログラム。
【符号の説明】
21  プログラム入力部 22  構文解析部 23  ループ抽出部 24  ループ解析部 25  ループ展開部 26  ループ最適化部 27  コード生成部

Claims (4)

    【特許請求の範囲】
  1. 【請求項1】  複数の命令を同時に実行する電子計算
    機のループ処理において、ループの各反復内の演算数、
    データ参照関係を元に、ループの複数反復分の命令をを
    1反復内に展開するループ展開処理を行うか否かを判定
    するプログラム解析手段と、ループ内命令列の任意の複
    数反復分を1反復内に展開した等価な命令列に変換する
    プログラム変換手段と、展開されたループに対して異な
    る反復の演算を別の処理ユニットに割り当てて同時に実
    行するように命令を並べ替えていく命令再配置手段とを
    備えたことを特徴とするループ最適化方式。
  2. 【請求項2】  前記プログラム変換手段は、前記プロ
    グラム解析手段で検出したループ内演算数が一定の基準
    値より小さい場合にループ展開を実行することを特徴と
    する請求項1記載のループ最適化方式。
  3. 【請求項3】  前記プログラム変換手段は、前記プロ
    グラム解析手段で検出したループ内演算数とループ内ロ
    ード、ストア命令数の比率が一定の基準値を越える場合
    にループ展開を実行することを特徴とする請求項1記載
    のループ最適化方式。
  4. 【請求項4】  前記プログラム変換手段は、前記プロ
    グラム解析手段で検出したループ内演算数と計算機の持
    つ演算ユニット数の比率が一定の基準値を越える場合に
    ループ展開を実行することを特徴とする請求項1記載の
    ループ最適化方式。
JP3071979A 1991-04-05 1991-04-05 ループ最適化方法及び装置 Expired - Fee Related JP3032031B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP3071979A JP3032031B2 (ja) 1991-04-05 1991-04-05 ループ最適化方法及び装置
US07/863,709 US5303357A (en) 1991-04-05 1992-04-03 Loop optimization system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP3071979A JP3032031B2 (ja) 1991-04-05 1991-04-05 ループ最適化方法及び装置

Publications (2)

Publication Number Publication Date
JPH04307625A true JPH04307625A (ja) 1992-10-29
JP3032031B2 JP3032031B2 (ja) 2000-04-10

Family

ID=13476095

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3071979A Expired - Fee Related JP3032031B2 (ja) 1991-04-05 1991-04-05 ループ最適化方法及び装置

Country Status (2)

Country Link
US (1) US5303357A (ja)
JP (1) JP3032031B2 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014002736A (ja) * 2012-06-15 2014-01-09 Apple Inc ループバッファのパッキング
KR20150020236A (ko) 2012-02-03 2015-02-25 가부시키가이샤 고베 세이코쇼 성형 가공용 알루미늄판
US9471322B2 (en) 2014-02-12 2016-10-18 Apple Inc. Early loop buffer mode entry upon number of mispredictions of exit condition exceeding threshold
JP2017016570A (ja) * 2015-07-06 2017-01-19 富士通株式会社 コンパイラ装置、コンパイル方法およびコンパイラプログラム
US9557999B2 (en) 2012-06-15 2017-01-31 Apple Inc. Loop buffer learning
JP2020526814A (ja) * 2017-07-07 2020-08-31 エヌチェーン ホールディングス リミテッドNchain Holdings Limited ブロックチェーンコンパイラ

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE68927946T2 (de) * 1988-08-02 1997-10-16 Philips Electronics Nv Verfahren und Vorrichtung für die Synchronisierung von parallelen Prozessoren unter Verwendung einer unscharf definierten Sperre
IL98248A0 (en) * 1991-05-23 1992-06-21 Ibm Israel Instruction scheduler for a computer
WO1994025917A1 (en) * 1993-04-26 1994-11-10 Comdisco Systems, Inc. Method for scheduling synchronous data flow graphs
US5524223A (en) * 1994-01-31 1996-06-04 Motorola, Inc. Instruction accelerator for processing loop instructions with address generator using multiple stored increment values
JP2634144B2 (ja) * 1994-07-06 1997-07-23 インターナショナル・ビジネス・マシーンズ・コーポレイション プログラムの並列化実行方法及び並列化実行コンパイラ
JP3626784B2 (ja) * 1995-03-17 2005-03-09 富士通株式会社 分散メモリ型並列計算機におけるデータ更新方法およびプログラム変換装置
JP3218932B2 (ja) * 1995-07-06 2001-10-15 株式会社日立製作所 データプリフェッチコード生成方法
US6074433A (en) * 1995-08-25 2000-06-13 Fujitsu Limited Optimization control apparatus and optimization control method for array descriptions
US5920724A (en) * 1996-03-28 1999-07-06 Intel Corporation Software pipelining a hyperblock loop
US5826054A (en) * 1996-05-15 1998-10-20 Philips Electronics North America Corporation Compressed Instruction format for use in a VLIW processor
US8583895B2 (en) * 1996-05-15 2013-11-12 Nytell Software LLC Compressed instruction format for use in a VLIW processor
US5924128A (en) * 1996-06-20 1999-07-13 International Business Machines Corporation Pseudo zero cycle address generator and fast memory access
US6085315A (en) * 1997-09-12 2000-07-04 Siemens Aktiengesellschaft Data processing device with loop pipeline
US6247173B1 (en) 1997-09-24 2001-06-12 Hewlett-Packard Company Computer compiler optimizer for reducing computer resource consumption during dependence analysis after loop unrolling
US6070011A (en) * 1997-10-21 2000-05-30 Hewlett-Packard Co. Compiler for performing a loop fusion, dependent upon loop peeling and/or loop reversal
US6272676B1 (en) * 1998-01-13 2001-08-07 Intel Corporation Method and apparatus for finding loop— lever parallelism in a pointer based application
US6314493B1 (en) 1998-02-03 2001-11-06 International Business Machines Corporation Branch history cache
EP0997815A3 (en) * 1998-10-29 2004-05-26 Texas Instruments Incorporated Interactive translation system and method
JP3477137B2 (ja) * 2000-03-03 2003-12-10 松下電器産業株式会社 最適化装置及び最適化プログラムを記録したコンピュータ読み取り可能な記録媒体
US7039906B1 (en) 2000-09-29 2006-05-02 International Business Machines Corporation Compiler for enabling multiple signed independent data elements per register
US6988266B2 (en) * 2001-05-08 2006-01-17 Sun Microsystems, Inc. Method of transforming variable loops into constant loops
US20030171907A1 (en) * 2002-03-06 2003-09-11 Shay Gal-On Methods and Apparatus for Optimizing Applications on Configurable Processors
JP3847672B2 (ja) * 2002-07-03 2006-11-22 松下電器産業株式会社 コンパイラ装置及びコンパイル方法
US7355743B2 (en) * 2002-10-25 2008-04-08 Pitney Bowes Inc. Statement level tracking in a document production and management process
US7210018B2 (en) * 2002-12-30 2007-04-24 International Business Machines Corporation Multiple-stage pipeline for transaction conversion
US7640540B2 (en) * 2003-10-24 2009-12-29 Microsoft Corporation Mechanism for providing extended functionality to command line instructions
US7318223B2 (en) * 2004-08-26 2008-01-08 International Business Machines Corporation Method and apparatus for a generic language interface to apply loop optimization transformations
US20110055303A1 (en) * 2009-09-03 2011-03-03 Azuray Technologies, Inc. Function Generator
JP2013171459A (ja) * 2012-02-21 2013-09-02 Toshiba Corp プログラム解析装置、プログラム解析方法および記録媒体
US10754744B2 (en) * 2016-03-15 2020-08-25 Wisconsin Alumni Research Foundation Method of estimating program speed-up in highly parallel architectures using static analysis

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4642765A (en) * 1985-04-15 1987-02-10 International Business Machines Corporation Optimization of range checking
US4858115A (en) * 1985-07-31 1989-08-15 Unisys Corporation Loop control mechanism for scientific processor
US4782444A (en) * 1985-12-17 1988-11-01 International Business Machine Corporation Compilation using two-colored pebbling register allocation method such that spill code amount is invariant with basic block's textual ordering
JPH0795274B2 (ja) * 1986-09-19 1995-10-11 株式会社日立製作所 配列添字解析方法
US4802091A (en) * 1986-10-31 1989-01-31 International Business Machines Corporation Method for improving the efficiency of arithmetic code generation in an optimizing compiler using the technique of reassociation
US5226128A (en) * 1987-05-01 1993-07-06 Hewlett-Packard Company Horizontal computer having register multiconnect for execution of a loop with a branch
JPH04211830A (ja) * 1990-02-05 1992-08-03 Matsushita Electric Ind Co Ltd 並列化コンパイル方式

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150020236A (ko) 2012-02-03 2015-02-25 가부시키가이샤 고베 세이코쇼 성형 가공용 알루미늄판
JP2014002736A (ja) * 2012-06-15 2014-01-09 Apple Inc ループバッファのパッキング
US9557999B2 (en) 2012-06-15 2017-01-31 Apple Inc. Loop buffer learning
US9753733B2 (en) 2012-06-15 2017-09-05 Apple Inc. Methods, apparatus, and processors for packing multiple iterations of loop in a loop buffer
US9471322B2 (en) 2014-02-12 2016-10-18 Apple Inc. Early loop buffer mode entry upon number of mispredictions of exit condition exceeding threshold
JP2017016570A (ja) * 2015-07-06 2017-01-19 富士通株式会社 コンパイラ装置、コンパイル方法およびコンパイラプログラム
JP2020526814A (ja) * 2017-07-07 2020-08-31 エヌチェーン ホールディングス リミテッドNchain Holdings Limited ブロックチェーンコンパイラ

Also Published As

Publication number Publication date
US5303357A (en) 1994-04-12
JP3032031B2 (ja) 2000-04-10

Similar Documents

Publication Publication Date Title
JPH04307625A (ja) ループ最適化方法及び装置
JP4077252B2 (ja) コンパイラプログラムおよびコンパイル処理方法
JP4042604B2 (ja) プログラム並列化装置,プログラム並列化方法およびプログラム並列化プログラム
JP2738692B2 (ja) 並列化コンパイル方法
US5815719A (en) Method and apparatus for easy insertion of assembler code for optimization
Bala et al. Efficient instruction scheduling using finite state automata
US8789031B2 (en) Software constructed strands for execution on a multi-core architecture
US20020083423A1 (en) List scheduling algorithm for a cycle-driven instruction scheduler
JPH09282179A (ja) オーバーヘッド命令を最小限にする最適化コンパイラにおける命令スケジューリングの方法および装置
Anantharaman et al. A hardware accelerator for speech recognition algorithms
JP3032030B2 (ja) ループ最適化方法及び装置
JPH04293150A (ja) コンパイル方法
Rajagopalan et al. Specification of software pipelining using petri nets
JP3887097B2 (ja) コンパイル方法,コンパイル装置および、コンパイル用プログラムを記憶したコンピュータ読み取り可能な記憶媒体
Govindarajan et al. Co-scheduling hardware and software pipelines
JP3028821B2 (ja) 並列化コンパイル方法
JPS62217325A (ja) アセンブラコ−ド最適化方式
TW518516B (en) Sub-pipelined and pipelined execution in a VLIW
US8479179B2 (en) Compiling method, compiling apparatus and computer system for a loop in a program
JPH04308937A (ja) コード生成方法
JP2000020482A (ja) ループ並列化方法
JPH09160784A (ja) 並列化コンパイル方式
JPH0659933A (ja) コード変換装置
JP3551352B2 (ja) ループ分割方法
JP3394353B2 (ja) 機械語命令スケジューリング装置

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080210

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090210

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100210

Year of fee payment: 10

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100210

Year of fee payment: 10

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110210

Year of fee payment: 11

LAPS Cancellation because of no payment of annual fees