JPH0475139A - ループ並列化装置 - Google Patents

ループ並列化装置

Info

Publication number
JPH0475139A
JPH0475139A JP2188138A JP18813890A JPH0475139A JP H0475139 A JPH0475139 A JP H0475139A JP 2188138 A JP2188138 A JP 2188138A JP 18813890 A JP18813890 A JP 18813890A JP H0475139 A JPH0475139 A JP H0475139A
Authority
JP
Japan
Prior art keywords
instruction
loop
execution
executed
parallel
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
JP2188138A
Other languages
English (en)
Inventor
Toru Imai
徹 今井
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 JP2188138A priority Critical patent/JPH0475139A/ja
Priority to EP91306414A priority patent/EP0467629B1/en
Priority to DE69121993T priority patent/DE69121993D1/de
Priority to US07/731,063 priority patent/US5317743A/en
Publication of JPH0475139A publication Critical patent/JPH0475139A/ja
Pending legal-status Critical Current

Links

Classifications

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

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)
  • Executing Machine-Instructions (AREA)

Abstract

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

Description

【発明の詳細な説明】 [発明の目的] (産業上の利用分野) この発明は、プログラムのループを構成する命令列を効
率良く実行するためのループ並列化方式に関する。
(従来の技術) 与えられたプログラムを機械語命令のプログラムに翻訳
する言語処理系において、より高速に実行できる機械語
命令のプログラムに翻訳するための最適化技法の1つと
して、ループを検出し、その部分を高速化する手法かあ
る。
ところで従来の逐次実行を行うプロセッサにおいて、ル
ープを実行する場合には、ループの第n回目の実行が終
了してからループを脱出する条件が成立するかどうかを
調べ、成立すれば脱出し、成立しなければ第(n+1)
回目を実行する方式%式% これに対して、ループをより高速化するための方式とし
て、ベクトル化という手法がある。これは、プロセッサ
に複数の演算ユニットを持たせ、ループの第n回目の実
行が終了する前に別の演算ユニットを利用して第(n+
1)回目の実行を始めることにより、高速化を図る方式
である。
また、複数の演算ユニットをループ以外にも利用できる
ように、より汎用性を持たせたプロセッサとして、例え
ば、VLIWや5uperscalarというアーキテ
クチャがあるが、これらにおいても、ベクトル化と同等
のループの最適化の技法として、5ortvarc p
ipeliningと呼ばれる並列実行の手法が知られ
ている。これについては、例えば、次の文献に紹介され
ている。
rsoftware Pipelining: An 
E「I’ective ScheduIing Tec
hnique for vLIW MachinesJ
(M、 Lam、 ACM 5IGPLAN  −88
Conrcrence onProgramming 
Language Design & Impleme
ntation’1988 ’)。
ところが、このようなベクトル化やsortwarep
ipeIining  に代表されるようなループの異
なるステージを同時に実行する手法においては、一部の
命令列は本来実行すべき順番と異なる順番で実行される
。このために、命令の実行順序に依存するような命令列
に対してこの手法を適用すると、プログラムに記述され
た論理的な意味と異なる動作を起こすことになる。
このような誤動作は、レジスタやメモリアドレスなどの
同一の資源への参照または変更を行う複数の命令の実行
順序が入れ替わった場合に起こるものであり、これを防
ぐためには、同一の資源への参照または変更を行う複数
の命令の実行順序が入れ替わるか否かを判定する必要が
ある。つまり、同一の資源への参照または変更を行う命
令の実行順序が入れ替わると判定されれば、ループの異
なるステージの同時実行を行なわない命令列を出力し、
実行順序が入れ替わらないと判定されれば、異なるステ
ージの同時実行を行う命令列を出力するようにするので
ある。
しかしながら、各命令がどの資源に参照または変更を行
うかは翻訳時の解析で決定できるとは限らず、実行時に
ならなければ決定できない場合もある。ところが従来は
、このような場合には、プログラムの正しい動作を保証
するために、ループの異なるステージの同時実行は行な
わない命令列を出力するようにしており、このために実
行時に並列実行ができるものについても逐次実行にしな
ければならない場合も多くあり、処理時間の無駄が生じ
ていた。
(発明が解決しようとする課題) この様に従来では、ループの異なるステージの同時実行
可能性が翻訳時に判別できない場合、これらステージの
同時実行を行なわない命令列を出力していたため、処理
時間の無駄か生じていた。
この発明は、このような従来の問題点に鑑みてなされた
もので、ループの異なるステージの同時実行可能性が翻
訳時に判別できない場合でも、実行時に判別することに
よりループ並列化を進め、処理時間の短縮化の図れるル
ープ並列化方式を提供することを目的とする。
[発明の構成] (課題を解決するための手段) この発明のループ並列化方式は、ループを構成する命令
列に対して、各命令の参照する資源を検出する資源参照
検出手段と、 前記各命令の変更する資源を検出する資源変更検出手段
と、 前記資源参照検出手段と資源変更検出手段の検出結果に
基づいてループの異なるステージの並列実行可能性を調
べ、可能か不可能が不明かを判定するループ並列化可能
性判定手段と、 前記ループを構成する命令列に対し、前記ループ並列化
可能性判定手段において、ループ並列化可能と判定され
た場合には並列実行を行う命令列として出力し、ループ
並列化不可能と判定された場合には並列実行を行なわな
い命令列として出力し、ループ並列化不明と判定された
場合には、命令実行時に命令が参照または変更する資源
を判定して、並列実行を行うことができる条件が成立し
ていれば並列実行を行う命令列に分岐し、並列実行を行
うことができる条件が成立していなければ並列実行を行
わない命令列に分岐する命令列として出力するコード生
成手段とを備えたものである。
(作用) この発明のループ並列化方式では、与えられたループを
構成する命令列に対して資源参照検出手段により各命令
の参照する資源を検出し、資源変更検出手段により前記
命令列の各命令の変更する資源を検出する。
そしてこれらの資源参照検出手段と資源変更検出手段の
検出結果に基づいて、ループ並列化可能性判定手段によ
りループの異なるステージの並列実行可能性を調べ、可
能か不可能か不明かを判定する。
そしてコード生成手段では、このループ並列化可能性判
定手段において、ループ並列化可能と判定された場合に
は並列実行を行う命令列として出力し、ループ並列化不
可能と判定された場合には並列実行を行なわない命令列
として出力し、ループ並列化不明と判定された場合には
、命令実行時に命令が参照または変更する資源を判定し
て、並列実行を行うことができる条件が成立していれば
並列実行を行う命令列に分岐し、並列実行を行うことが
できる条件が成立していなければ並列実行を行わない命
令列に分岐する命令列として出力する。
こうして、従来では、翻訳時にループの異なるステージ
の並列実行可能性が判定できない場合には並列実行を行
なわなかったものが、この発明のループ並列化方式では
、命令実行時にループの異なるステージの並列実行可能
性を判定することによって、より多くの場合に並列実行
できるようにし、プログラムの高速実行を可能とする。
(実施例) 以下、この発明の実施例を図に基づいて詳説する。
第1図はこの発明の一実施例のブロック図であり、入力
される命令列ICに対して、各命令により参照される資
源を検出する資源参照検出部1と、各命令により変更さ
れる資源を検出する資源変更検出部2と、これらの資源
参照検出部1と資源変更検出部2との検出結果に基づい
て、入力された命令列ICの第nステージと第(n+1
)ステージとの並列実行が可能かどうかを判定するルー
プ並列化可能性判定部3とを備えている。さらに、ルー
プ並列化可能性判定部3の判定結果に基づき、ループを
並列化したコードや並列化しないコードなどの命令列Φ
Cを出力するコード生成部4を備えている。
次に、上記の構成のループ並列化方式の動作について説
明する。
いま第2図に示すプログラムを実行する場合の動作につ
いて説明することにする。第2図のプログラムは、変数
Q+  rの示すメモリアドレスに入っている1バイト
ずつを取り出し、これを加えて変数pの示すメモリアド
レスに書き込むプログラムである。そして、このプログ
ラムを実行スるための命令列は第3図に示すものとなる
。なお、変数p、q、rで示されるメモリアドレスはす
でにレジスタRp、Rq、Rrにロードされているもの
とする。
この第3図の命令列において、 命令(3)はループを続行するが否がの条件判断として
用いるレジスタを設定する命令命令(4)はループに入
るが否がの条件判断をするコードに無条件分岐をする命
令 命令(5)は変数qで示されるメモリアドレスに入って
いる1バイトをレジスタRsにロードする命令 命令(6)は変数rで示されるメモリアドレスに入って
いる1バイトをレジスタRtにロードする命令 命令(7)、(8)は何もしない命令 命令(9)はRsとRtを加える命令 命令(10)は、命令(9)の結果を変数pで示される
メモリアドレスにストアする命令 命令(11)はループを続行するか否かを判定する命令 命令(12)はループを続行する場合にループの先頭に
戻り、さもなければループを抜ける命令 である。
そして命令(5)から命令(12)がループを構成する
命令列である。
ループの異なるステージを並列に実行しないで、本来の
命令列の実行順序で逐次実行する時には、第4図に示す
ような流れとなり、第n回目のループの実行が終わった
後に第(n+1)回目の実行を行う実行順序となる。
ところが、並列実行を行う場合には、例えば、第5図に
示すように、異なる演算ユニ・ソトALUI  ALU
2を用いることにより、第n回目のループを構成する命
令のうちの命令(5)〜(8)の実行が終わった後に、 第n回目の命令(9)と第(n+1)回目の命令(5)
、 第n回目の命令(10)と第(n+、1)回目の命令(
6)、 第n回目の命令(11)と第(n+1)回目の命令(7
)、 第n回目の命令(12)と第(n+1)回目の命令(8
) をそれぞれ同時に実行することになり、これらはプログ
ラム本来の実行順序とは異なった順序で命令を実行する
。
そこで、第1図に示す資源参照検出部1は、第6図に示
すようなアルゴリズムにより、メモリの内容を参照する
命令のリストおよびレジスタを参照する命令のリストを
持っていて、これに照合することにより各命令がメモリ
アドレスまたはレジスタの資源を参照するか否かを判定
し、また参照するならばどのメモリアドレスまたはレジ
スタを参照するのかをも判定し、リストに記録する(ス
テップSll〜514)。
こうして資源参照検出部1により得られたリストは、第
2図のプログラムの命令列に対応するものとしては第7
図に示すようなものとなる。
また第1図に示す資源変更検出部2は、第8図に示すよ
うなアルゴリズムにより、メモリの内容を変更する命令
のリストおよびレジスタを変更する命令のリストを持っ
ており、これに照合することにより各命令がメモリアド
レスまたはレジスタの資源を変更するか否かを判定し、
また変更するならばどのメモリアドレスまたはレジスタ
を変更するのかをも判定し、リストに記録する(ステッ
プ821〜524)。
こうして資源変更検出部2により得られたリストは、第
2図のプログラムの命令列に対応するものとしては第9
図に示すようなものとなる。
これらの資源参照検出部1と資源変更検出部2の検出結
果に基づき、ループ並列化可能性判定部3は、第10図
に示すような命令順序変更表を作成し、ループ並列化の
可能性を判定する。
一般に、命令順序の変更には2種類あり、1つは本来の
順序A−Bで実行される命令A、BがBAのように入れ
替わる場合であり、もう1つはA、Bの命令が同時に実
行されるように割り当てられる場合である。
そこで第10図では、前者のように入れ替わる場合には
O印で表わし、後者のように同時に実行される場合には
Δ印で表わしている。そしてこの例では、命令が本来の
順序と入れ替わるのは、O印で示したように、 第n回目の命令(10)に対して第(n+1)回目の命
令(5)、 第n回目の命令(11)に対して第(n+1)回目の命
令(5)、(6)、 第n回目の命令(12)に対して第(n+1)回目の命
令(5)、(6)、(7) である。また同時実行となるのは、 第n回目の命令(9)に対して第(r++1)回目の命
令(5)、 第n回目の命令(10)に対して第(n+1)回目の命
令(6)、 第n回目の命令(11)に対して第(n+1)回目の命
令(7)、 第n回目の命令(12)に対して第(n + 1)回目
の命令(8) である。
ループ並列化可能性判定部3は、こうして得られた第7
図の資源参照検出リスト、第9図の資源変更検出リスト
および第10図の命令順序変更表を基にしてループ並列
化可能性の判定を行う。この命令順序の変更が問題とな
るのは、同じ資源に対して以下の3つのいずれかが起こ
っている場合である。
(1)本来、先立って実行されるべき命令が参照であり
、後に実行されるべき命令が変更である場合、 (2)本来、先立って実行されるべき命令が変更てあり
、後に実行されるべき命令が参照である場合、 (3)本来、先立って実行されるべき命令が変更であり
、後に実行されるべき命令が変更である場合。
そして、第10図においてO印の付いている命令の組に
対して問題となるのは、上記の3つのすべてであり、Δ
印の付いている命令の組に対して問題となるのは、上記
(2)、(3)の場合である。なぜならば、(1)の関
係にあるような命令が同時に実行される場合は、この順
序が保存されるからである。そこで、ループ並列化可能
性判定部3は、○印について(1)〜(3)が起こる場
合を、また△印について(2)、(3)が起こる場合を
判定するようにする。
このようにすると、ループ並列化可能性判定部3のルー
プ並列化可能性判定では、第11図に示すような順序の
変更が問題となる(もしくはその可能性のある)命令お
よび競合する(もしくはその可能性のある)資源のリス
トを得る。ここで、この2つの命令が競合するのは、2
つのメモリアドレスが等しくなった場合、つまり、 (pの初期値)−(qの初期値)+1 の関係が成り立つときである。
そこで、ループ並列化可能性判定部3ては、p。
qの初期値か分かる場合には、この関係が成り立つか否
かを判定できるために、可能または不可能を判定結果と
してコード生成部4に出力する。しかしながら、初期値
が分からない場合には、この関係が成り立つか否かを判
定できないために、不明という判定結果をコード生成部
4に出力する。
そしてコード生成部4では、ループ並列化可能性判定部
3において可能という判定結果が出力された場合には、
第12図に示すようにループの異なる2つのステージを
演算器ALUI、ALU2で並列に実行するようなコー
ドを出力する。この第12図のコードでは、 サイクルtにおいて第n回目の命令(9)と第(n +
 1)回目の命令(5)、 サイクル(t+1)において第n回目の命令(10)と
第(n+1)回目の命令(6)、サイクル(t+2)に
おいて第n回目の命令(11)と第(n+1)回目の命
令(7)、サイクル(t+3)において第n回目の命令
(12)と第(n+1)回目の命令(8)がそれぞれ同
時に実行されることを示している。
次にコード生成部4ては、ループ並列化可能性判定部3
において不可能という判定結果が出力された場合に、第
3図に示すように並列化を行なわない本来の実行順序で
プログラムを実行する命令列コード○Cを出力する。さ
らにコード生成部4では、ループ並列化可能性判定部3
において不明という判定結果が出力された場合に、第1
3図に示すように実行時に並列実行ができるか否かを判
断して、同時並列実行L paral Ielまたは逐
次実行L seqに分岐するような命令(1)、(2)
を出力する。
つまり、命令(1)、(2)において (pの初期値)−(qの初期値)+1 の関係が成り立つか否かを調べ、この関係が成立すれば
高速に実行できるL paral Ielというコード
に条件分岐し、成り立たなければ並列に実行しない本来
のプログラムL seqに分岐するのである。
このようにして、この実施例のループ並列化方式では、
与えられたループを構成する命令列ICに対して資源参
照検出部1により各命令の参照する資源を検出し、資源
変更検出部2により前記命令列の各命令の変更する資源
を検出し、これらの資源参照検出部1と資源変更検出部
2の検出結果に基づいて、ループ並列化可能性判定部3
によりループの異なるステージの並列実行可能性を調べ
、可能であるか不可能であるか、さらには並列実行可能
性がはっきりしない不明であるかを判定する。
そしてコード生成部4ては、このループ並列化可能性判
定部3において、ループ並列化可能と判定された場合に
は並列実行を行う命令列ΦCを出力し、ループ並列化不
可能と判定された場合には並列実行を行なわない命令列
?5Cを出力する。そしてさらに、ループ並列化不明と
判定された場合には、命令実行時に命令が参照または変
更する資源を判定して、並列実行を行うことかできる条
件か成立していれば並列実行を行う命令列に分岐し、並
列実行を行うことができる条件が成立していなければ並
列実行を行わない命令列に分岐する命令列OCを出力す
る。
こうして、従来ては、翻訳時にループの異なるステージ
の並列実行可能性が判定できない場合には並列実行を行
なわなかったものを、この発明の実施例のループ並列化
方式では、命令実行時にループの異なるステージの並列
実行可能性を判定することによって、より多くの場合に
並列実行できるようになり、プログラムの高速実行がで
きるのである。
[発明の効果] 以上のようにこの発明によれば、各命令による資源の参
照と変更の情報を解析することによりループの異なるス
テージの並列実行が可能か否かを判定し、可能と不可能
かが明確に判定できる場合には該当する実行コードを出
力する上に、翻訳時には並列実行が可能かどうか不明の
場合にはその命令の実行時に並列化の可能性を再度判定
し、並列化が可能であれば並列実行するようにしている
ので、従来のように翻訳時には並列実行可能と判定でき
ないために逐次実行としていたプログラムについても、
並列実行を可能とすることができる場合があり、より多
くの場合に並列実行できるようになり、プログラムの高
速実行化が図れる。
【図面の簡単な説明】
第1図はこの発明の一実施例のブロック図、第2図は上
記実施例で用いるプログラム例を示す説明図、第3図は
上記プログラムを実行するための命令列を示す説明図、
第4図は上記プログラムに対してループの異なるステー
ジを逐次実行する場合のプログラムの挙動を示す説明図
、第5図は上記プログラムに対してループの異なるステ
ージを並列に実行する場合のプログラムの挙動を示す説
明図、第6図は上記実施例の資源参照検出部のアルゴリ
ズムを示す説明図、第7図は上記資源参照検出部が作成
した資源参照検出リストの説明図、第8図は上記実施例
の資源変更検出部のアルゴリズムを示す説明図、第9図
は上記資源変更検出部が作成した資源変更検出リストの
説明図、第10図は上記実施例のループ並列化可能性判
定部の作成した命令順序変更表を示す説明図、第11図
は上記プログラムにおいて実行順序の変更が問題となる
命令および競合する資源の対照表を示す説明図、第12
図は上記プログラムに対してループ並列化可能性判定部
が並列化可能と判定した場合にコード生成部が出力する
ループの異なる2つのステージを並列に実行するための
命令列を示す説明図、第13図は上記プログラムに対し
てループ並列化可能性判定部が並列化の可能性が不明と
判定した場合にコード生成部が出力する実行時に並列実
行ができるか否かを判断して分岐するような命令列を示
す説明図である。 IC・・・入力命令列   OC・・・出力命令列1・
・・資源参照検出部  2・・・資源変更検出部3・・
・ループ並列化可能性判定部 4・・・コード生成部

Claims (2)

    【特許請求の範囲】
  1. (1)ループを構成する命令列に対して、各命令の参照
    する資源を検出する資源参照検出手段と、前記各命令の
    変更する資源を検出する資源変更検出手段と、 前記資源参照検出手段と資源変更検出手段の検出結果に
    基づいてループの異なるステージの並列実行可能性を調
    べ、可能か不可能か不明かを判定するループ並列化可能
    性判定手段と、 前記ループを構成する命列列に対し、前記ループ並列化
    可能性判定手段において、ループ並列化可能と判定され
    た場合には並列実行を行う命令列として出力し、ループ
    並列化不可能と判定された場合には並列実行を行なわな
    い命令列として出力し、ループ並列化不明と判定された
    場合には、命令実行時に命令が参照または変更する資源
    を判定して、並列実行を行うことができる条件が成立し
    ていれば並列実行を行う命令列に分岐し、並列実行を行
    うことができる条件が成立していなければ並列実行を行
    わない命令列に分岐する命令列として出力するコード生
    成部手段を備えて成るループ並列化方式。
  2. (2)前記ループ並列化可能性判定手段は、実行順序の
    変更可能な命令及び同時実行可能な命令を特定し、これ
    と前記資源参照検出手段及び資源変更検出手段の検出結
    果に従って、実行順序の変更が問題となる命令及び競合
    する資源を検出するものである請求項1記載のループ並
    列化方式。
JP2188138A 1990-07-18 1990-07-18 ループ並列化装置 Pending JPH0475139A (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2188138A JPH0475139A (ja) 1990-07-18 1990-07-18 ループ並列化装置
EP91306414A EP0467629B1 (en) 1990-07-18 1991-07-16 A loop compiler method & apparatus for a data processing system
DE69121993T DE69121993D1 (de) 1990-07-18 1991-07-16 Schleifenkompilierverfahren und -gerät für ein Datenverarbeitungssystem
US07/731,063 US5317743A (en) 1990-07-18 1991-07-17 System for compiling iterated loops based on the possibility of parallel execution

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2188138A JPH0475139A (ja) 1990-07-18 1990-07-18 ループ並列化装置

Publications (1)

Publication Number Publication Date
JPH0475139A true JPH0475139A (ja) 1992-03-10

Family

ID=16218408

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2188138A Pending JPH0475139A (ja) 1990-07-18 1990-07-18 ループ並列化装置

Country Status (4)

Country Link
US (1) US5317743A (ja)
EP (1) EP0467629B1 (ja)
JP (1) JPH0475139A (ja)
DE (1) DE69121993D1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007066128A (ja) * 2005-09-01 2007-03-15 Fujitsu Ltd コンパイル処理方法、コンパイル処理装置及びコンパイル処理プログラム
JP2008523523A (ja) * 2004-12-13 2008-07-03 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ プログラム内のループ用のコンパイル方法、コンパイル装置およびコンピュータシステム

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5539911A (en) * 1991-07-08 1996-07-23 Seiko Epson Corporation High-performance, superscalar-based computer system with out-of-order instruction execution
JP2921190B2 (ja) * 1991-07-25 1999-07-19 日本電気株式会社 並列実行方式
JPH05250341A (ja) * 1991-11-11 1993-09-28 Matsushita Electric Ind Co Ltd 並列可能性判定装置、及び並列可能性判定方法、並びにそれを用いたプログラム変換装置
JP2943464B2 (ja) * 1991-12-09 1999-08-30 松下電器産業株式会社 プログラム制御方法及びプログラム制御装置
DE59401478D1 (de) * 1993-03-15 1997-02-13 Siemens Ag Verfahren zur maschinellen erzeugung von nebenläufig bearbeitbaren befehlsgruppen aus einem programm für superskalare mikroprozessoren
JPH0744508A (ja) * 1993-08-03 1995-02-14 Hitachi Ltd プログラム分割方法
JPH07110800A (ja) * 1993-10-13 1995-04-25 Matsushita Electric Ind Co Ltd 最適化並列コンパイル装置及び最適化並列コンパイル方法
DE69502952T2 (de) * 1994-05-16 1998-12-10 British Telecommunications P.L.C., London Vorrichtung zur erzeugung von instruktionen
JPH07319710A (ja) * 1994-05-20 1995-12-08 Matsushita Electric Ind Co Ltd コンパイル処理方法
JP2669603B2 (ja) * 1994-12-15 1997-10-29 インターナショナル・ビジネス・マシーンズ・コーポレイション コンパイラにおけるコード生成方法及びコンパイラ
US5920724A (en) * 1996-03-28 1999-07-06 Intel Corporation Software pipelining a hyperblock loop
US5854933A (en) * 1996-08-20 1998-12-29 Intel Corporation Method for optimizing a computer program by moving certain load and store instructions out of a loop
US6339840B1 (en) * 1997-06-02 2002-01-15 Iowa State University Research Foundation, Inc. Apparatus and method for parallelizing legacy computer code
US6085315A (en) * 1997-09-12 2000-07-04 Siemens Aktiengesellschaft Data processing device with loop pipeline
US6272676B1 (en) * 1998-01-13 2001-08-07 Intel Corporation Method and apparatus for finding loop— lever parallelism in a pointer based application
JP4190610B2 (ja) * 1998-02-18 2008-12-03 富士通株式会社 ロードモジュールの試験ルート決定装置
JP3595158B2 (ja) * 1998-03-13 2004-12-02 株式会社東芝 命令割り当て方法及び命令割り当て装置
US6321312B1 (en) 1998-07-01 2001-11-20 International Business Machines Corporation System and method for controlling peripheral device memory access in a data processing system
WO2000034854A2 (en) * 1998-12-08 2000-06-15 Koninklijke Philips Electronics N.V. Method of executing an interpreter program
US6269440B1 (en) * 1999-02-05 2001-07-31 Agere Systems Guardian Corp. Accelerating vector processing using plural sequencers to process multiple loop iterations simultaneously
AU2002365812A1 (en) * 2001-12-04 2003-06-17 Powerllel Corporation Parallel computing system, method and architecture
US7146360B2 (en) 2002-12-18 2006-12-05 International Business Machines Corporation Method and system for improving response time for database query execution
US7111287B2 (en) * 2003-01-10 2006-09-19 International Business Machines Corporation Global processor resource assignment in an assembler
US8443351B2 (en) * 2006-02-23 2013-05-14 Microsoft Corporation Parallel loops in a workflow
US8024714B2 (en) * 2006-11-17 2011-09-20 Microsoft Corporation Parallelizing sequential frameworks using transactions
CN102483701A (zh) * 2010-07-05 2012-05-30 松下电器产业株式会社 程序生成装置、程序生产方法及程序
US9158544B2 (en) 2011-06-24 2015-10-13 Robert Keith Mykland System and method for performing a branch object conversion to program configurable logic circuitry
US8869123B2 (en) * 2011-06-24 2014-10-21 Robert Keith Mykland System and method for applying a sequence of operations code to program configurable logic circuitry
US10089277B2 (en) 2011-06-24 2018-10-02 Robert Keith Mykland Configurable circuit array
US9304770B2 (en) 2011-11-21 2016-04-05 Robert Keith Mykland Method and system adapted for converting software constructs into resources for implementation by a dynamically reconfigurable processor
US9633160B2 (en) 2012-06-11 2017-04-25 Robert Keith Mykland Method of placement and routing in a reconfiguration of a dynamically reconfigurable processor
US9361079B2 (en) * 2012-01-30 2016-06-07 Nvidia Corporation Method for compiling a parallel thread execution program for general execution
US9619290B2 (en) * 2015-03-06 2017-04-11 Advanced Micro Devices, Inc. Hardware and runtime coordinated load balancing for parallel applications

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4710872A (en) * 1985-08-07 1987-12-01 International Business Machines Corporation Method for vectorizing and executing on an SIMD machine outer loops in the presence of recurrent inner loops
JP2708405B2 (ja) * 1986-03-03 1998-02-04 株式会社日立製作所 コンパイラにおけるループ展開方法
JPH0795274B2 (ja) * 1986-09-19 1995-10-11 株式会社日立製作所 配列添字解析方法
JPH0814817B2 (ja) * 1986-10-09 1996-02-14 株式会社日立製作所 自動ベクトル化方法
JP3053092B2 (ja) * 1987-06-05 2000-06-19 株式会社日立製作所 並列化コンパイル方法
JP2738692B2 (ja) * 1988-01-29 1998-04-08 株式会社日立製作所 並列化コンパイル方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008523523A (ja) * 2004-12-13 2008-07-03 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ プログラム内のループ用のコンパイル方法、コンパイル装置およびコンピュータシステム
JP2007066128A (ja) * 2005-09-01 2007-03-15 Fujitsu Ltd コンパイル処理方法、コンパイル処理装置及びコンパイル処理プログラム

Also Published As

Publication number Publication date
US5317743A (en) 1994-05-31
DE69121993D1 (de) 1996-10-17
EP0467629B1 (en) 1996-09-11
EP0467629A2 (en) 1992-01-22
EP0467629A3 (en) 1992-10-28

Similar Documents

Publication Publication Date Title
US5317743A (en) System for compiling iterated loops based on the possibility of parallel execution
US5499349A (en) Pipelined processor with fork, join, and start instructions using tokens to indicate the next instruction for each of multiple threads of execution
JP4042604B2 (ja) プログラム並列化装置,プログラム並列化方法およびプログラム並列化プログラム
JP3032031B2 (ja) ループ最適化方法及び装置
CN110187988B (zh) 适用于虚函数和函数指针的静态函数调用图构建方法
KR100616722B1 (ko) 수퍼스칼라프로세서내의파이프라인명령디스패치유닛
JPH0776921B2 (ja) データ処理方法及び装置
US20220391216A1 (en) Graphics processing
US5276821A (en) Operation assignment method and apparatus therefor
US20040025153A1 (en) System and method for software pipelining loops with multiple control flow paths
CN111512296B (zh) 处理器架构
JP3175768B2 (ja) 複合型命令スケジューリング処理装置
US11599358B1 (en) Pre-staged instruction registers for variable length instruction set machine
US11372691B2 (en) Data processing systems comprising grouped execution threads with common data values
CN112602058B (zh) 处理器存储器存取
US20030182511A1 (en) Apparatus and method for resolving an instruction conflict in a software pipeline nested loop procedure in a digital signal processor
CN115113933B (zh) 用于加速数据运算的装置
JP3006505B2 (ja) 並列プロセスを含むプログラムの修正装置、修正方法、および修正プログラムを記憶する記憶媒体
JP2853460B2 (ja) データロード方法及びそれを用いた演算プロセッサ
JPH04252336A (ja) プログラム最適化処理装置
JPH08171554A (ja) ベクトル演算の最適化コンパイラ
CN117492836A (zh) 一种针对可变长向量体系结构的数据流分析方法
JPH08115220A (ja) ループ最適化方法
JPH0561672A (ja) ロード・ストア処理装置
JPH0713962A (ja) コンパイラ装置