JP3730675B2 - 処理装置 - Google Patents

処理装置 Download PDF

Info

Publication number
JP3730675B2
JP3730675B2 JP31464894A JP31464894A JP3730675B2 JP 3730675 B2 JP3730675 B2 JP 3730675B2 JP 31464894 A JP31464894 A JP 31464894A JP 31464894 A JP31464894 A JP 31464894A JP 3730675 B2 JP3730675 B2 JP 3730675B2
Authority
JP
Japan
Prior art keywords
instruction
scalar
vector
array
data
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
Application number
JP31464894A
Other languages
English (en)
Other versions
JPH08171554A (ja
Inventor
浩子 飯田
正樹 青木
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP31464894A priority Critical patent/JP3730675B2/ja
Publication of JPH08171554A publication Critical patent/JPH08171554A/ja
Application granted granted Critical
Publication of JP3730675B2 publication Critical patent/JP3730675B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)
  • Devices For Executing Special Programs (AREA)

Description

【0001】
【産業上の利用分野】
本発明は,ソースプログラムをコンパイルして得られる中間言列(アセンブラ表現等)のベクトル演算を最適化する処理装置に関する。
【0002】
ソースプログラムのループ命令等はコンパイラによりベクトル演算命令列に変換し,高速に処理することができるが,ベクトル演算はスカラ演算より1命令あたりの実行時間が長いのでより高速化することが望まれる。
【0003】
本発明は,ソースプログラムをコイパイルして生成されるベクトル演算命令の処理を高速にする処理装置を提供するものである。
【0004】
【従来の技術】
図6,図7は従来技術の説明図である。
図6 (a)はソースプログラムの例であって,メモリ領域の8バイトの実数データの配列B(B(100))をメモリ領域の配列A(A(100))に転送するプログラムの記述である。配列C(C(100))は4バイトの整数データである。mはスカラの整数データである。配列Cとmをインデックスとした配列Bのデータを配列Aに転送するための間接アドレスを生成する。DOループにより順次指定される間接アドレスにより,配列Bのデータが取り出されて配列Aに転送される。
【0005】
図6 (b)は,図6 (a)のソースプログラムをコンパイルして得られるアセンブラ表現である。
図7により,図6 (b)の処理について説明する。
【0006】
図7において,
118はメモリ領域であって,配列Cのデータを保持するものである。
119はメモリ領域であって,mを保持するものである。
【0007】
120はベクトルレジスタ(vt3)であって,配列Cをロードするものである。
121はレジスタ(t1)であって,mをロードするものである。
【0008】
122はベクトルレジスタ(vt4)であって,(C(I)+m)(I=1〜N)の演算結果を保持するものである。
123はメモリ領域であって,配列Bを保持するものである。
【0009】
124はベクトルレジスタ(vt5)であって,間接アドレスにより配列Bのデータを取り出して保持するものである。
125はメモリ領域であって,配列Aである。
【0010】
メモリ領域118には配列CのデータC(1) ,C(2) ,・・・,C(100)が保持されている。例えば,C(1) =1,C(2) =4,C(3) =8,・・・とする。メモリ領域119にmが保持されている。例えば,m=3とする。
【0011】
VL命令によりメモリ領域118の配列Cがベクトルレジスタvt3(120)にロードされる。
次に,L命令によりメモリ領域119のmがレジスタt1(121)にロードされる。
【0012】
VAS命令により,ベクトルレジスタvt3(120)のC(1) ,C(2) ,C(3) ,・・・の値とレジスタt1(121)のmが加算され,ベクトルレジスタvt4(122)に保持される。ベクトルレジスタvt4(122)の内容が間接アドレスを与える。例えば,m=3,C(1) =1,C(2) =4,C(3) =8,・・・の場合,間接アドレスは4,8,11,・・・となる。
【0013】
VIL命令は,配列Bの基本アドレス(メモリ領域123の配列Bの先頭アドレス)から数えて,ベクトルレジスタvt4に保持される間接アドレスC(1) +m,C(2) +m,C(3) +m,・・・だけ変位したメモリ領域123のアドレスの配列Bを取り出し,順次ベクトルレジスタ124にロードする。例えば,C(1) +m=4なので,配列Bの4番目のデータB(4)を一番目のベクトルレジスタvt5にロードする。C(2) +m=7なので,メモリ領域123の配列Bの7番目のデータB(7)を2番目のベクトルレジスタvt5にロードする。同様に,C(3) +m=11なので,メモリ領域123の配列Bの11番目のデータB(11)を3番目のベクトルレジスタvt5にロードする。C(4) +m以降についても同様の処理を行う。
【0014】
ベクトルレジスタvt5(124)に保持されたデータはその配列順に配列Aの配列に対応する。そして,VST命令により,それぞれメモリ領域125の配列Aに転送される。
【0015】
【発明が解決しようとする課題】
従来の技術では,ソースプログラムのDOループ等をコンパイルしてベクトル演算により処理する場合には,間接アドレスを生成するための(C(I)+m)(I=1〜N)等の演算を必要として演算回数が多くなり,処理に時間を要するものであった。
【0016】
本発明は,コンパイルにより生成されるベクトル演算命令の命令数を少なくして,ベクトル演算命令を最適にコンパイルして高速に処理する処理装置を提供することを目的とする。
【0017】
【課題を解決するための手段】
図6 (b)のVAS命令の演算結果(間接アドレス)は,次のVIL命令で使用されるだけであり,しかも,その演算結果(C(I)+m)(I=1〜N)はベクトルレジスタvt3(120)の値にそれぞれmを加えたものである。従って,このような場合には,C(I)+mの演算をいちいち行う必要はなく,mに対して配列(B)のB(m)の位置からC(I)の値だけシフト位置の配列Bのデータを取り出せば良いことを意味する。すなわち,B(m)を指定するアドレスを求めるスカラ演算だけにベクトル演算VASを置き換えることが可能である。
【0018】
本発明は,ベクトル演算命令をスカラ命令で置き換えられる場合には,ベクトル命令をスカラ命令に置き換えるようにした。
図1は本発明の基本構成を示す。
【0019】
図1において,
1はソースプログラムである。
2はコンパイラであって,ソースプログラム1をコンパイルしてオブジェクトプログラム3を生成するものである。
【0020】
3はソースプログラム1のオブジェクトプログラムである。
10は演算パターン認識部であって,ソースプログラム1をコンパイルして得られる中間言列(例えばアセンブラ表現等)の演算パターンを認識するものである。
【0021】
11は,命令変更可否判定部であって,ベクトル演算命令の演算結果の他の命令に対する依存関係を調べ,他の命令との依存関係によりベクトル演算命令をスカラ命令に置き換えられるかを判定するものである。
【0022】
12は,スカラ演算命令作成部であって,スカラ演算命令に置き換えるベクトル演算命令に対してスカラ演算命令を作成するものである。
13は演算パターン変更部であって,スカラ演算命令作成部12で求めたスカラ演算命令でベクトル演算命令を置き換えるものである。
【0023】
【作用】
図1の本発明の基本構成の動作を説明する。
コンパイラ2はソースプログラム1を入力し,アセンブラ表現等の中間言列に変換する。演算パターン認識部10はコンパイルされた中間言列の演算パターンを分析する。命令変更可否判定部11はベクトル演算命令の演算結果と他の命令との依存関係を調べ,依存関係がなければ,スカラ演算命令作成部12にベクトル演算命令に代わるスカラ演算命令の作成を指示する。例えば,図6 (a)の場合ベクトル演算命令VASの演算結果は,VIL命令を実行するための間接アドレスとしてだけ使用されているので,他のスカラ演算命令に置き換えることが可能である。スカラ演算命令作成部12は変更可能なベクトル演算命令に代わるスカラ演算命令を作成する。例えば,中間言列が図6 (b)のような場合,ベクトル演算命令VASに置き換えるスカラ演算命令を作成する。演算パターン変更部13は,変更するベクトル演算命令,例えばVAS命令を削除し,スカラ演算命令作成部12の作成したスカラ演算命令を中間言列に組み込み,オブジェクトプログラム3を作成して出力する。
【0024】
本発明によれば,ベクトル演算命令を少なくして高速に演算処理できるようにコンパイルを最適化することができる。
【0025】
【実施例】
図2は本発明の実施例を示す。
図2 (a)は,ソースプログラムであって,図6 (a)と同じものである。従って説明は省略する。
【0026】
図2 (b)は,ソースプログラム30を本発明のコンパイラによりコンパイルして得られる結果のアセンブラ表現31である。図6 (b)との相違点は,図6 (b)のVAS命令が削除され,かわりにスカラ演算命令であるADDR命令,MULT命令,ADD命令が付け加えられている点である。
【0027】
図2 (b)の処理を図3により説明する。
図3は本発明の実施例の動作説明図である。
図3において,
41はメモリ領域であって,mを保持するものである。
【0028】
42はメモリ領域であって,配列Cを保持するものである。
43はベクトルレジスタvt6であって,配列Cを保持するものである。
44はレジスタt1であって,配列Bのメモリの先頭領域のアドレスXを保持するものである。
【0029】
45はレジスタであって,mを保持するものである。
46はレジスタであって,8×mの演算結果を計算するものである(本実施例では,倍精度で計算する場合について説明しているので,mを8倍する。単精度の場合には4倍である)。
【0030】
47はレジスタであって,(配列Bの先頭アドレス(X)+8×m)を計算して得られる配列Bのm番目のデータB(m)のアドレスを保持するものである。
50はメモリ領域であって,配列Bを保持するものである。
【0031】
51はベクトルレジスタvt7であって,配列Bから取り出して配列Aに転送するデータを保持するものである。
52はメモリ領域であって,配列Aを保持するものである。
【0032】
図3を参照して図2 (b)のアセンブラ表現31の動作を説明する。
ADDR命令により配列Bの先頭アドレスXをレジスタt1(44)にロードする。
【0033】
L命令により,mをレジスタt2(45)にロードする。
MULT命令により,レジスタt2(45)の内容を8倍し,レジスタt3(46)に保持する。
【0034】
ADD命令により,レジスタt1(44)の内容(X)とレジスタt3(46)の内容(8m)を加算し,結果をレジスタt4(47)に保持する。
VL命令により,メモリ領域42の配列Cをベクトルレジスタvt6(43)にロードする。
【0035】
VIL命令により,B(m)のアドレスからレジスタvt6(43)のC(I)(I=1〜N)の値だけ変位した配列Bを取り出し,ベクトルレジスタvt7(51)に転送する。配列BのデータB(m)の位置はレジスタt4(47)の値により計算する。
【0036】
例えば,m=3,C(1)=1,C(2)=4,C(3)=8,・・・とする。配列BのB(3)(=B(m))は,レジスタt4(47)の値から求まる。そこで,B(3)を基準にして,ベクトルレジスタvt6(43)の値(配列C)を参照し,配列B(3)からC(1)=1だけ変位した位置にあるB(4)を求め,ベクトルレジスタvt7(51)に転送する。また,配列B(3)からC(2)=4だけ変位した位置にあるB(7)を求め,ベクトルレジスタvt7(51)に転送する。配列B(3)からC(3)=8だけ変位した位置にあるB(11)を求め,ベクトルレジスタvt7(51)に転送する。同様に,C(4)以後に対応する配列Bのデータを取り出し,それぞれ対応するベクトルレジスタvt7(51)に転送する。
【0037】
VST命令により,ベクトルレジスタvt7のデータをそれぞれの対応する配列Aのメモリ領域52に転送する。
以上のように,図2 (b)のアセンブラ表現31では,図6 (b)のベクトル演算命令であるVAS命令がない代わりにADDR命令,MULT命令,ADD命令の3命令が付け加えられているが,それらはスカラ命令であるので,VAS命令の実行時間より短時間で処理することができる。そのため,図2 (b)のアセンブラ表現は,図6 (b)のアセンブラ表現より高速に処理することが可能である。
【0038】
図4は本発明の実施例構成を示す。
図4において,
60はソースプログラムである。
【0039】
61は処理装置であって,CPUとメモリにより構成されるものである。
62はオブジェクトプログラムである。
65はコンパイラである。
【0040】
66はプログラム入力部であって,ソースプログラム60を入力するものである。
66’はプログラム分析部であって,ソースプログラムの内容を分析し,ベクトル化する部分とそれ以外のスカラ処理をする部分を求めるものである。
【0041】
67はベクトル化処理部であって,ソースプログラムの内容のうち,ベクトル化できる部分をベクトル化してコンパイルするものである。
67’はスカラ処理部であって,スカラ処理のコンパイルをするものである。
【0042】
68は命令スケジューリング部であって,生成された命令のスケジューリングを行うものである。
69はオブジェクト生成部であって,最終的な中間言列(アセンブラ表現)を機械語に変換し,オブジェクトプログラム62を生成するものである。
【0043】
70は演算パターン処理部であって,演算パターンの作成,変更等を行うものである。
71は演算パターン認識部であって,ソースプログラム60をコンパイルして得られる中間言列の演算パターンを認識するものである。
【0044】
72は命令変更可否判定部であって,中間言列のベクトル演算命令をスカラ演算命令に変更可能であるかどうかの判定を行うものである。
73はスカラ演算命令作成部であって,ベクトル演算命令をスカラ演算命令に変更できる場合に変更するためのスカラ演算命令を作成するものである。
【0045】
74は演算パターン変更部であって,スカラ演算命令に変更するベクトル演算命令を削除し,代わりのスカラ演算命令を挿入し,最終的な演算パターン(最終的な中間言列)を生成するものである。
【0046】
図5の構成の動作を説明する。
プログラム入力部66はソースプログラム60を入力する。プログラム分析部66’はソースプログラムの内容を分析し,ベクトル化処理する部分とそれ以外のスカラ処理する部分に切り分ける。ベクトル化処理部67はソースプログラムのうちベクトル化できる部分をベクトル演算命令によりコンパイルしてアセンブラ表現に変換する。スカラ処理部67’はソースプログラムの内容のうちスカラ処理する部分をコンパイルしてアセンブラ表現に変換する。演算パターン認識部71はコンパイルされたアセンブラ表現の内容を分析し,演算パターンを認識する。命令変更可否判定部72は,演算パターンのベクトル演算命令に着目し,例えば,ベクトル演算命令がVAS命令の場合には,そこで使用されている間接アドレスが他の命令で使用されているかどうか等を分析し,他のスカラ演算命令に置き換えることが可能かどうかを判定する。スカラ演算命令作成部73はスカラ演算命令に置き換えることのできるベクトル演算命令に対して,置き換えるためのスカラ演算命令を作成する。演算パターン変更部は,スカラ演算命令に変更するベクトル演算命令を削除し,置き換えるスカラ演算命令を挿入する。オブジェクト生成部69は演算パターン変更部74の作成した最終的な中間言列(アセンブラ表現)を機械言のオブジェクトプログラムに変換し出力する。
【0047】
図5は,本発明の演算パターン処理部のフローチャートの例である。
S1 演算パターン認識部71はベクトル化処理部67とスカラ処理部67’のコンパイルにより生成された中間言列(アセンブラ表現)からベクトルデータとスカラデータの加算があるかを検索する。
【0048】
S2 命令変更可否判定部72は,S1の演算結果が,ベクトルロード命令(VIL)の間接アドレス配列として使用されているかを検索する。
S3 命令変更可否判定部72により,ベクトルロード命令(VIL)の間接アドレスとして使用されていると認識された場合には,VIL命令の基本アドレス部分に使用するスカラデータにS1のスカラデータを組み込むために,スカラ演算命令を作成し,命令列に挿入する。
【0049】
S4 演算パターン変更部74は,S3の演算結果をベクトルロード命令(VIL命令)の基本アドレス部分に組み込む。
S5 演算パターン変更部74は,S1のベクトルデータとスカラデータの加算命令(VAS)を削除する。
【0050】
【発明の効果】
本発明の処理装置によれば,生成されるオブジェクトプログラムのベクトル演算命令が少なくなる。そのため,ベクトル演算が高速化され,最適化されたコンパイルを行うことができる。
【図面の簡単な説明】
【図1】本発明の基本構成を示す図である。
【図2】本発明の実施例を示す図である。
【図3】本発明の実施例の動作説明図である。
【図4】本発明の実施例構成を示す図である。
【図5】本発明の演算パターン処理部のフローチャートてある。
【図6】従来技術の説明図である。
【図7】従来技術の説明図である。
【符号の説明】
1 :ソースプログラム
2 :コンパイラ
3 :オブジェクトプログラム
10:演算パターン認識部
11:命令変更可否判定部
12:スカラ演算命令作成部
13:演算パターン変更部

Claims (1)

  1. ソースプログラムに基づいてオブジェクトプログラムを生成するコンパイラを実行する処理装置であって
    ソースプログラムをコンパイルしたアセンブラ表現の中間言列の演算パターンを認識する演算パターン認識手段と
    前記演算パターン認識手段で認識した演算パターンのベクトルデータとスカラデータの加算命令について、ベクトルデータとスカラデータの加算命令により生成される間接アドレスが他の命令で使用されていない場合に該スカラ演算命令に変更可能と判定し、それ以外の場合は命令変更不可能と判定する命令変更可否判定手段と
    前記命令変更可否判定手段でスカラ演算命令に変更可能と判定したベクトル演算命令について、該ベクトル演算命令に代わるスカラ演算命令を作成して置き換える演算パターン変更手段と
    を備えることを特徴とする処理装置。
JP31464894A 1994-12-19 1994-12-19 処理装置 Expired - Fee Related JP3730675B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP31464894A JP3730675B2 (ja) 1994-12-19 1994-12-19 処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP31464894A JP3730675B2 (ja) 1994-12-19 1994-12-19 処理装置

Publications (2)

Publication Number Publication Date
JPH08171554A JPH08171554A (ja) 1996-07-02
JP3730675B2 true JP3730675B2 (ja) 2006-01-05

Family

ID=18055864

Family Applications (1)

Application Number Title Priority Date Filing Date
JP31464894A Expired - Fee Related JP3730675B2 (ja) 1994-12-19 1994-12-19 処理装置

Country Status (1)

Country Link
JP (1) JP3730675B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102231118A (zh) * 2011-07-25 2011-11-02 中国科学技术大学 一种基于龙芯3a向量访存的编译优化方法

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1998018084A1 (fr) * 1996-10-18 1998-04-30 Fujitsu Limited Dispositif et procede servant a accelerer la vitesse d'acces a une memoire

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102231118A (zh) * 2011-07-25 2011-11-02 中国科学技术大学 一种基于龙芯3a向量访存的编译优化方法
CN102231118B (zh) * 2011-07-25 2013-12-18 中国科学技术大学 一种基于龙芯3a向量访存的编译优化方法

Also Published As

Publication number Publication date
JPH08171554A (ja) 1996-07-02

Similar Documents

Publication Publication Date Title
US6286135B1 (en) Cost-sensitive SSA-based strength reduction algorithm for a machine with predication support and segmented addresses
JP3280449B2 (ja) コンパイル装置
Cronquist et al. Specifying and compiling applications for RaPiD
US5790760A (en) Program generating apparatus and method thereof
US4821181A (en) Method for converting a source program of high level language statement into an object program for a vector processor
JPH0814817B2 (ja) 自動ベクトル化方法
US7917899B2 (en) Program development apparatus, method for developing a program, and a computer program product for executing an application for a program development apparatus
JPH10228382A (ja) コンパイル方式
JPH06324881A (ja) メモリデータの重なり判定機能を備えたコンパイラ装置
Bhasker et al. An optimizer for hardware synthesis
Huang et al. Generating instruction sets and microarchitectures from applications
SNOW III AUTOMATION OF MODULE SET INDEPENDENT REGISTER-TRANSFER LEVEL DESIGN.
US20010044930A1 (en) Loop optimization method and a compiler
JP3730675B2 (ja) 処理装置
JP3683281B2 (ja) メモリアクセスの高速化処理装置および方法
JP3196625B2 (ja) 並列化コンパイル方式
JP7088276B1 (ja) コンパイル装置、コンパイル方法、及びコンパイルプログラム
Dechering et al. V-cal: a Calculus for the Compilation of Data Parallel Languages
JP2006099720A (ja) データフローグラフ処理方法
Cohen Typing rule-based transformations over topological collections
JPH0540780A (ja) ベクトル化処理方式
JP2585793B2 (ja) コンパイラシステム
JP3542538B2 (ja) プログラム最適化処理装置及びプログラム最適化方法
Wendt Fast code generation using automatically-generated decision trees
JPH11242598A (ja) コンパイル方法およびコンパイル装置ならびにオブジェクトプログラム実行方法およびオブジェクトプログラム実行装置ならびにプログラム記憶媒体

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040727

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040927

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20040927

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050614

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050801

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20050801

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: 20051004

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20051007

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20081014

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20091014

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20091014

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20101014

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20101014

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20111014

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20111014

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20121014

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20121014

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20131014

Year of fee payment: 8

LAPS Cancellation because of no payment of annual fees