JPS63285668A - ベクトルロ−ド処理方法 - Google Patents

ベクトルロ−ド処理方法

Info

Publication number
JPS63285668A
JPS63285668A JP12151787A JP12151787A JPS63285668A JP S63285668 A JPS63285668 A JP S63285668A JP 12151787 A JP12151787 A JP 12151787A JP 12151787 A JP12151787 A JP 12151787A JP S63285668 A JPS63285668 A JP S63285668A
Authority
JP
Japan
Prior art keywords
vector
instruction
load instruction
intermediate code
vector load
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
JP12151787A
Other languages
English (en)
Inventor
Hideo Serizawa
芹澤 英夫
Masaki Aoki
正樹 青木
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 JP12151787A priority Critical patent/JPS63285668A/ja
Publication of JPS63285668A publication Critical patent/JPS63285668A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Complex Calculations (AREA)

Abstract

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

Description

【発明の詳細な説明】 (概 要〕 計算機のコンパイラの処理で、ベクトルレジスタの所要
数を減少する最適化のための、ベクトルロードの処理方
法である。
翻訳処理過程の中間コード列から、ベクトルロード命令
を検出し、ロードされたベクトルデータを参照する命令
のうち、先頭の参照命令の直前に該ベクトルロード命令
を移動し、その他の参照命令の直前には、同じベクトル
データのベクトルロード命令を生成して挿入し、それら
のロード先のベクトルレジスタと参照命令の参照ベクト
ルレジスタとが一致するように参照命令を修正する。
この方法により、ロードされたベクトルデータを保持す
るためにベクトルレジスタを占有している期間が短縮さ
れ、所要ベクトルレジスタ数を減少できる。
〔産業上の利用分野〕
本発明は、計算機プログラムを翻訳するコンパイラの処
理方法に係り、特に所要のベクトルレジスタ数を減少す
るための、ベクトルロードの処理方法に関する。
〔従来の技術〕
第3図は計算機の構成例を示すブロック図である。処理
装置1はコンパイラ2のプログラムを実行することによ
り、記憶装置3に格納されている原始プログラム4を翻
訳して目的プログラム5を記憶装置6へ出力する。
原始プログラム4は例えばFORTRANプログラミン
グ言語で記述されたプログラムであり、コンパイラ2は
、この原始プログラムからいわゆるベクトルプロセッサ
で実行するようにベクトル化した目的プログラムを生成
することができる。
このために、コンパイラ2において、中間コード生成部
7が原始プログラム4を読み込んでプログラム文を解析
し、中間コード列10を生成して記憶装置11に出力す
る。
中間コード列の生成においてコンパイラはデータに記憶
領域を割り付け、又ベクトルデータの処理部分等でベク
トルプロセッサによる並列実行可能な部分を検出して、
ベクトルプロセッサで実行されるベクトル命令に対応さ
せるための、いわゆるベクトル化を行い、それらを所定
の中間コード列で表現する。
この中間コード列10について、中間コード最適化部8
は、目的プログラムの実行効率等を改善するようにプロ
グラムを変更する最適化処理を実行し、その結果を目的
プログラム生成部9によって処理して、いわゆる機械語
のスカラ命令及びベクトル命令からなる目的プログラム
を生成し、目的プログラム5として出力する。
第4図に、公知のFORTRAN言語で記述された原始
プログラム、及びそれから生成される中間コード列の一
例を示す。
図の原始プログラム17は公知のように、DO文とラベ
ル「10」のCoNTINUE文とに挟まれた2個の代
人文を、添字「■」の値を1から100まで1づつ増加
させて、繰り返し実行することを指定する内容である。
従って、代入文のオペランドにあるA(I)、B(1)
、C(I)、−・−・のデータは、典型的なベクトルデ
ータであるので、このプログラムはベクトル化されて2
、中間コード列18が生成される。
中間コード列18ニおイテ、rVLENG=100 J
 ハ+れに続く中間コードで処理するベクトルデータの
ベクトル長(ベクトルの要素数)を示し、B(*)、C
(*)等の形式で指定の要素数の各ベクトルデータを示
す。
vtl 、vt2等はベクトルプロセッサから割り当て
るべきベクトルレジスタを示し、従って例えばrvtl
=8(本)」等で示されるベクトルロード命令の中間コ
ード(以下では、単にベクトルロード命令というものと
し、その他の中間コードについても同様とする)は、ベ
クトルデータBの100個の要素データをベクトルレジ
スタνt1にロードするベクトル命令に対応する。
又rvt3=vtl+vt2 Jのような中間コードは
、それ以前のベクトルロード等の処理でベクトルレジス
タvtl及びvt2にロードされているベクトルデータ
の要素間の加算結果のベクトルデータを、ベクトルレジ
スタvt3に格納することを示す。
公知のように、ベクトルプロセッサは、いわゆるパイプ
ライン方式の演算機構によって多数の同種の演算を並列
に実行することによって高速処理を実現する処理装置で
あり、その特徴を有効に活用するには、なるべく大きな
味クトル長のベクトルデータの演算を行うようにベクト
ル化することが必要である。
そのためには、VLHNGで指定する必要な要素数のベ
クトルデータを格納できるベクトルレジスタを必要個数
膜けなければならないが、ベクトルプロセッサのパード
ウ亙ア構成上から、例えば8192要素のデータを格納
できる記憶装置を使用して、8分割して8個までの各1
024要素データを保持するベクトルレジスタとし、8
個で不足の場合は16分割して、16個までの各512
要素データを保持するベクトルレジスタとし、このよう
にして、32個のベクトルレジスタに分割した場合は、
各保持できるデータ要素数は256に、64個のベクト
ルレジスタにすればデータ要素数は128に減少するよ
うに構成される。
一般に、複雑な演算を要するプログラムになると、VL
ENGで指定された所要ベクトル長を有し、同時に必要
になるベクトルレジスタの個数は増加する。その結果、
必要なベクトルレジスタ数を得るために、可能なベクト
ル長が短くなる場合には、一連の演算の途中でベクトル
レジスタの内容を入れ換える等の処理が必要になり、そ
の結果前記パイプライン演算機構の処理効率を落さざる
を得ない状況が生じる。
従って、常に所要ベクトルレジスタ数をできるだけ減少
させる処置をとることが望ましく、このための中間コー
ド最適化処理の方式が、本出願人の特許願(特願昭61
−39673号)の明細書に開示されている。
即ち、第5図に示す最適化処理において、処理ステップ
20で1つのVLENGで指定されたベクトル長の有効
範囲で、同時に必要になるベクトルレジスタ個数の状況
を把握し、処理ステップ21で中間コード列を走査して
ベクトルロード命令の1つを検出する。
処理ステップ22で、検出したベクトルロード命令に続
く中間コードを走査して、そのベクトルロード命令でロ
ードされたベクトルレジスタを参照しているベクトル演
算命令(以下において参照命令という)を検出し、処理
ステップ23でベクトルロード命令を参照命令の前のな
るべく近傍、通常は直前の位置、に移動することによっ
て、ベクトルレジスタの所要数を減少できるが識別し、
可能であれば処理ステップ24でベクトルロード命令を
その位置へ移動する。
この処理により、例えば第6図(a)の中間コード列1
2の例のベクトルロード命令13と参照命令14との場
合のように、ベクトルロード命令でロードされたベクト
ルレジスタ(図の例ではvtl)をはじめて参照するベ
クトル演算命令が、ベクトルロード命令から離れた位置
にある場合に、ら)の中間コード列15に示すように、
そのベクトルロード命令13を、参照命令14の直前の
位置に移動することにより、中間コード列13のプログ
ラム区間16において必要となるベクトルレジスタの個
数を減少することができる。
〔発明が解決しようとする問題点〕
ベクトル化される原始プログラムの前記00文によるル
ープが大規模になると、その中間コード列の1つのベク
トルロード命令に対応する参照命令が複数存在し、それ
らがプログラム中に分散している場合がしばしば生じ、
そのような場合には、前記の最適化処理による、1参照
命令に関するベクトルロード命令の移動のみでは、ベク
トルレジスタ数を減少する効果が局限され、十分な効果
を期待出来ないという問題がある。
〔問題点を解決するための手段〕
第1図は、本発明の構成を示す処理の流れ図である。
図はコンパイラにおける所要ベクトルレジスタ数を減少
するための最適化処理の流れを示し、30〜38は処理
ステップを示す。
〔作 用〕
コンパイラは中間コード列について、所要ベクトルレジ
スタ数を減少するための最適化処理を、第1図の処理ス
テップ30〜34において、従来のようにベクトルロー
ド命令を検出し、それに対応する参照命令を検索して、
最適化できるなら参照命令のなるべく近傍にベクトルロ
ード命令を移動するように実行する。
次に処理ステップ35で、後続の中間コード列から更に
参照命令を検索し、参照命令があれば処理ステップ36
〜38で、最適化ができる場合には前記ベクトルロード
命令と等価なベクトルロード命令を生成して参照命令の
近傍に挿入するための処理を行い、所要の範囲の中間コ
ード列について以上の処理を続ける。
以上の処理方法により、1つのベクトルロード命令に対
応する複数の参照命令が分散している場合にも、所要ベ
クトルレジスタ数を減少する最適化の効果を上げること
ができる。
〔実施例〕
第1図の処理の流れにおいて、処理ステップ30〜34
は前記従来の処理ステップ20〜24の各処理と同様と
し、その結果ベクトルレジスタ数を減少する最適化が可
能な場合には、ベクトルロード命令が参照命令の近傍に
移動される。
次に本発明により、処理ステップ35で上記参照命令に
後続する中間コード列について、更に参照命令の検索を
続ける。
検索の結果、参照命令があった場合には、処理゛ ステ
ップ36において、検出しであるベクトルロード命令と
等価なベクトルロード命令を生成して、その参照命令の
前の適当な近傍に挿入することにより、検出しであるベ
クトルロード命令でロードされたベクトルレジスタを、
その前の参照命令の後も引き続いて占有する必要がない
ようにすることによって、ベクトルレジスタ所要数の減
少が得られるか判定する。
その結果ベクトルレジスタ数減少効果があれば処理ステ
ップ37で上記のようなベクトルロード命令の挿入を行
う。
ニーで、検出したベクトルロード命令と等価なベクトル
ロード命令とは、前者と同一のベクトルデータをロード
するが、ロード先とするベクトルレジスタは必ずしも同
一ではないベクトルロード命令を意味するものとし、挿
入するために生成するベクトルロード命令のロード先ベ
クトルレジスタには、使用状況を考慮して適当なベクト
ルレジスタを割り当てる。
その結果、参照命令の修正が一般に必要になり、処理ス
テップ38において参照命令の参照オペランドに指定し
である、該当のベクトルレジスタ塩を、挿入したベクト
ルロード命令で割り当てたベクトルレジスタ塩に変更す
る。
その後処理ステップ35に戻り、以上の処理ステップ3
5〜38の処理を参照命令がある間反復し、処理ステッ
プ35でVL[!NG命令の有効範囲の中間コード列の
残りの範囲を検索して、参照命令が無かったことにより
処理を終わる。
第2図の中間コード列40はベクトルロード命令41に
対応する参照命令が42〜44のように複数個分散して
いる例を示し、中間コード列45は、中間コード列40
から前記の最適化処理によって更新された結果の例であ
る。
この例は、何れの参照命令についても最適化処理が有効
と判定された場合とし、中間コード列45において、ベ
クトルロード命令41は参照命令42の直前に移動され
、参照命令43及び44の直前にはベクトルロード命令
と等価なベクトルロード命令46及び47がそれぞれ挿
入される。
挿入されるベクトルロード命令46.47のロード先ベ
クトルレジスタには、それぞれ適当に割り当てたベクト
ルレジスタvtX % Vjyが指定されるので、それ
に応じて参照命令43.44の参照オペランドの1つが
、それぞれ参照命令48.49として示すように、それ
ぞれvt、及びvt、に変更される。
〔発明の効果〕
以上の説明から明らかなように本発明によれば、ベクト
ル化した目的プログラムを生成するコンパイラにおいて
、同時に必要になるベクトルレジスタの個数を減少する
最適化の効果を向上することができるので、より実行効
率の良い目的プログラムの生成が可能になるという著し
い工業的効果がある。
【図面の簡単な説明】
第1図は本発明の構成を示す処理の流れ図、第2図は本
発明の詳細な説明する図、 第3図は計算機の構成例ブロック図、 第4図は中間コード列の説明図、 第5図は従来の処理の流れ図、 第6図は従来の処理例を説明する図 である。 図において、 1は処理装置、     2はコンパイラ、3.6.1
1は記憶装置、4.17は原始プログラム、5は目的プ
ログラム、 7は中間コード生成部、8は中間コード最
適化部、 9は目的プログラム生成部、 10.12.15.18.40.45は中間コード列、
20〜24.30〜38は処理ステップ本発明の構成を
示す処理の流れ図 第1図 本発明の詳細な説明する図 第2図 計算機の構成例ブロック図 第3図 中間コード列の説明図 第4図 従来の処理の流れ図 第5図

Claims (1)

  1. 【特許請求の範囲】 原始プログラムを翻訳して、ベクトル化された中間コー
    ド列を生成し、該中間コード列を最適化処理して目的プ
    ログラムを生成するコンパイラにおいて、 該中間コード列から、ベクトルデータをベクトルレジス
    タにロードするベクトルロード命令を検出し(30、3
    1)、 該ベクトルレジスタによって該ベクトルデータを参照す
    る命令のうちの、先頭の該参照命令の近傍に該ベクトル
    ロード命令を移動し(32〜34)、該先頭の参照命令
    以外の各該参照命令の近傍に、該ベクトルデータをロー
    ドするベクトルロード命令をそれぞれ挿入し(35〜3
    7)、 各該参照命令の参照するベクトルレジスタを、各該挿入
    されたベクトルロード命令がロードするベクトルレジス
    タと一致するように変更する(38)ことを特徴とする
    ベクトルロード処理方法。
JP12151787A 1987-05-19 1987-05-19 ベクトルロ−ド処理方法 Pending JPS63285668A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP12151787A JPS63285668A (ja) 1987-05-19 1987-05-19 ベクトルロ−ド処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP12151787A JPS63285668A (ja) 1987-05-19 1987-05-19 ベクトルロ−ド処理方法

Publications (1)

Publication Number Publication Date
JPS63285668A true JPS63285668A (ja) 1988-11-22

Family

ID=14813172

Family Applications (1)

Application Number Title Priority Date Filing Date
JP12151787A Pending JPS63285668A (ja) 1987-05-19 1987-05-19 ベクトルロ−ド処理方法

Country Status (1)

Country Link
JP (1) JPS63285668A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007094731A (ja) * 2005-09-28 2007-04-12 Matsushita Electric Ind Co Ltd コンパイラ装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007094731A (ja) * 2005-09-28 2007-04-12 Matsushita Electric Ind Co Ltd コンパイラ装置

Similar Documents

Publication Publication Date Title
US7793278B2 (en) Systems and methods for affine-partitioning programs onto multiple processing units
EP0400328B1 (en) Program parallelizing apparatus
US6202204B1 (en) Comprehensive redundant load elimination for architectures supporting control and data speculation
US5303357A (en) Loop optimization system
US6237077B1 (en) Instruction template for efficient processing clustered branch instructions
US20140115305A1 (en) Method for increasing the speed of speculative execution
JPH0814817B2 (ja) 自動ベクトル化方法
JPH0638234B2 (ja) 変換されたプログラムコードのソース命令不可分性を保持するためのシステムおよび方法
JPH06103463B2 (ja) コード生成方法
CN114329325A (zh) 一种基于昇腾ai处理器的批量矩阵乘算子的优化方法
EP2799986A1 (en) Apparatus and method for translating multithread program code
Anantharaman et al. A hardware accelerator for speech recognition algorithms
JPS63285668A (ja) ベクトルロ−ド処理方法
JPH04293150A (ja) コンパイル方法
US20220283947A1 (en) Information processing device and information processing method
JP2629474B2 (ja) 並列パイプライン命令処理装置の命令実行処理方式
US20260044342A1 (en) Proactive register promotion of aggregates amid control flow for gpu workloads
JPH06103462B2 (ja) ベクトル・レングス制御範囲分割処理方式
JPH04365133A (ja) プレロード命令実行装置及びプログラム修正装置
EP0481617A2 (en) Instruction scheduler for a computer
JPH04252336A (ja) プログラム最適化処理装置
JPH0241562A (ja) ベクトル演算列分割処理方式
JP3734658B2 (ja) コンパイラ装置およびコンパイラプログラムを記録したコンピュータ読取可能な記録媒体
JPH07191845A (ja) 即値データ転送装置
JPH053030B2 (ja)