JPH01291331A - マイクロコード生成方式 - Google Patents

マイクロコード生成方式

Info

Publication number
JPH01291331A
JPH01291331A JP12255688A JP12255688A JPH01291331A JP H01291331 A JPH01291331 A JP H01291331A JP 12255688 A JP12255688 A JP 12255688A JP 12255688 A JP12255688 A JP 12255688A JP H01291331 A JPH01291331 A JP H01291331A
Authority
JP
Japan
Prior art keywords
code
data path
optimization
intermediate code
knowledge base
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
JP12255688A
Other languages
English (en)
Other versions
JP2722495B2 (ja
Inventor
Ichiro Kuroda
黒田 一朗
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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP12255688A priority Critical patent/JP2722495B2/ja
Publication of JPH01291331A publication Critical patent/JPH01291331A/ja
Application granted granted Critical
Publication of JP2722495B2 publication Critical patent/JP2722495B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

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

Description

【発明の詳細な説明】 (産業上の利用分野) 本発明はディジタル信号処理に用いられるシグナルプロ
セッサなどにおけるマイクロコードの生成方式に関する
(従来の技術) 従来のコンパイラなどではコード生成における中間コー
ド最適化において中間コード内の冗長性の削除や、汎用
レジスタ上のデータのメモリへの退避の頻度を少なくす
るための演算順序の変更などの定型的な処理が行われて
いた。またコード生成においても中間コードに対して一
意的に対応するマシンコードまたは、マシンコード列を
割り当てることによりコード生成を行ってきた。
(発明が解決しようとする問題点) しかしマイクロプログラム方式を採用したシグナルプロ
セッサなどにおいては積和演算や高速フーリエ変換など
の特殊な演算を最小限にハードウェア量で高速に行える
ようにデータパスが設計さているため従来のコンパイラ
が対象としてきた汎用のマイクロプロセッサなどに比べ
てデータパス構造が複雑になっており、プロセッサリソ
ースを効率よく使うコードの生成が一般に困難になって
いる。
本発明の目的はターゲットマシンのアーキテクチャに依
存した中間言語最適化およびコード生成を行うことによ
りデータパス構造の複雑なシグナルプロセッサなどに対
しても効率のよいプログラムを生成できるマイクロコー
ド生成方式を提供することにある。
(問題点を解決する為の手段) 本発明のマイクロコード生成方式では、中間コードを入
力する中間コード入力部と、該中間コードに対してター
ゲットマシンのアーキテクチャに対応した最適化コード
変換を行うのに必要な変換ルールを知識ベースとして記
憶する中間コード最適化知識ベース記憶部と、該中間コ
ード最適化知識ベースに照して、前記入力手段により入
力された中間コード内にターゲットマシンのアーキテク
チャに対応した最適化コート変換できるコードが存在す
るかを推論しその推論結果により検出されたコードに対
して最適化コード変換を行う中間コード最適化推論部と
、ターゲットマシンのアーキテクチャにおいて任意のプ
ロセッサリソースの蓄えられたデータに対して必要な演
算を施すデータパスおよびこれを付随するマイクロコー
ドを探索するのに必要な知識知識ベースとして記憶する
任意のプロセッサリソースに蓄えられたデータに対して
与えられた演算を施すデータパスを探索する最適データ
パス推論部と、前記中間コード最適化推論部によって生
成された最適化中間コードをターゲットマシン上のプロ
セッサリソースと演算器との組合せに変換してから前記
最適データパス推論部を用いてマイクロコードを生成す
るコード生成部を備えることを特徴とする。
(作用) 本発明の原理を以下に示す。
一般にマシン独立の中間コードまたは演算DAG(Di
rected Acyclic Graph)のノード
は、(オペレータオペラントド・・オペランドN)とい
う形式で表わされる。一方、シグナルプロセッサなどの
マイクロプログラム方式の計算機ではオペレータに対応
する演算ハードウェアがアーキテクチャ内に複数個分散
して存在していることが多い。そこで演算DACにおけ
るオペレータをターゲットマシン内の演算器で実現でき
る演算命令に置き換える際に、式の意味を損なわないよ
うに、例えば、より簡単な演算器で実現できる演算に置
き換えたり、あるいは演算器が複数ある場合は演算を分
散して行わせるように演算DAGを変換することにより
、より効率のよいコード生成が可能になる。このような
変換はターゲットマシンのアーキテクチャに依存し、ま
た−度変換を行った結果により新たなる変換か可能にな
るというように変換が複数段に及ぶ場合も考えられる。
そこでターゲットマシンに対してそのアーキテクチャに
依存したDAC変換規則をルール化した知識ベースおよ
び、これに対する推論機構を用意することによりターゲ
ットマシン毎にアーキテクチャに適したDAC最適化部
を実現することができる。
以上に示したDAC変換によってターゲットマシンに最
適化したオペレータ、オペランドの組合せを得ることが
できる。ここでオペレータはプロセッサ内の演算器に対
応し、オペランドは既に計算されたノードの結果が格納
されているレジスタ等に対応する。ターゲットマシンに
対するマシンコード(マイクロコード)を求める為には
オペレータ、オペランドの組合せに対応した演算器、レ
ジスタの組合ぜを実現するデータパスおよびこれに対応
するマイクロ命令、或いはマイクロ命令列をターゲット
マシンのアーキテクチャ上で探索する必要がある。演算
器、レジスタの組合せに対応するデータパスを実現する
マイクロ命令は複数個に渡り、また−通りとは限らない
場合があるため効率の良いコードを生成する為にはもっ
ともコスト(実行時間など)の小さいマスクロ命令列を
選択する必要がある。そこでターゲットマシンのアーキ
テクチャ内でマイクロ命令で実現可能なデータパスをコ
ストを対比させたルールとして知識ベース化し、これに
対する推論機構を用意することによりアーキテクチャに
依存して最適化されたマイクロコードの生成を行なうこ
とができる。
(実施例) 次に本発明の実施例を図面を参照しながら説明する。
第1図は本発明の機能ブロック図である。第1図におい
て、1は中間コード入力部、2は中間コード最適化知識
ベース記憶部、3は中間コード最適化推論部、4はデー
タパス探索知識ベース記憶部、5は最適データパス推論
部、6はコード生成部である。
中間コード入力部1はDAC形式の中間コードを入力す
る部分である。中間コード最適化知識ベース記憶部2は
ターゲットマシンノアーキテクチャに依存した1f−t
henルール形式のDAGの変換ルールを格納する部分
である。中間コード最適化推論部3は中間コード入力部
1から渡されたプロセッサ独立なりACを中間コード最
適化知識ベース記憶部2内の変換ルールを用いて前向き
に推論を行うプロダクションシステムである。プロダク
ションシステムについては例えばウィンストン原著(白
井良明他訳)の1982年培風館発行の’LISP”の
18章記載の1f−thenシステムを用いることがで
きる。データパス探索知識ベース記憶部4は、ターゲッ
トマシンのアーキテクチャに依存した1f−thenル
ール形式のデータパス探索ルールを格納する部分である
。最適データパス推論部5は後述するコード生成!lS
6から渡された演算器、レジスタの組合せからなる演算
をターゲットアーキテクチャ上で実現するデータパスを
データパス探索知識ベース記憶部4内のデータパス探索
ルールを用いて後ろ向き推論により探索を行ってマイク
ロコードヲ生成する部分である。後ろ向き推論による探
索について例えば例えばチャーニアツク、リースベック
、マックダーモット原著白井秀俊他訳の1986年日本
コンピュータ協会発行の″人工知能プログラミング°′
の13章に記載されている方法が用いられる。コード生
成部6はDAC最適化推論部3から渡されたマシン最適
化DAGの各ノードを実行可能な順にオペレータ、オペ
ランドに対応した演算器、レジスタの組合せとして最適
データパス推論部5に渡す部分である。
第2図(a)は演算DAGの一例を示す図である。この
DAGは y =x(i)+x(i+1) なる式を表している。ここでiは整数型、yは実数型、
Xは配列名とする。またarrayは配列アクセスを意
味する。
第2図(b)〜(i)は後で述べる第2図(a)の演算
DAGの最適化変換過程を示したものである。
第3図は本発明の実施例で用いるターゲットマシンのア
ーキテクチャを示すブロック図である。第3図において
3−1はデータメモリ、3−2は前記データメモリ3−
1に対するデータポインタでありカウンタ機能を有する
。3−3は前記データメモリ3−1の出力を入力とする
と累算器であり累算レジスタを0クリアする機能を持つ
。データポインタ3−2はOクリア機能、インクリメン
ト機能を持ち、0クリア命令dpclr、インクリメン
ト命令dpincにより制御される。累算器3−3は累
算レジスタの0クリア機能、データメモリ3−1とのデ
ータ転送機能、データメモリの出力データの累算機能を
持ち、それぞれ0クリア命令accclr、データ転送
命令1oad、 5tore、累算命令accmにより
制御される。以上水したターゲットマシンにおいて第2
図(a)の演算DACに示した処理を実現する最適化マ
イクロコードを第1表に示す。第1表に示すマイクロコ
ードではまず第1のステップでdpclr命令によりデ
ータポインタの値を0とし、第2のステップでdpin
c命令によりデータポインタの値を11こする。次に第
3にステップで1oad命令によりデータメモリに格納
されている値a(1)を累算レジスタに転送すると同時
にdpinc命令でデータポインタの値を2にする。最
後に第4のステップでaccm命令により累算レジスタ
格納されている値a(i)とデータ第4図は第3図のア
ーキテクチャの為の中間コード最適化知識ベースを示す
図である。DRIからDR7はそれぞれDAG中に左辺
のパターンが存在した時、右辺のパターンに変換するD
AC変換ルールを表す。但し、x、y、zは任意のノー
ドあるいはパターンを表す。またmemはデータメモリ
アクセスを、a+はアドレスデータ加算を、a(定数)
はアドレス定数をa1+はアドレスインクリメント演算
をaccmはデータメモリ出力の累算演算を表す。
第5図は本マイクロコード生成方式の処理の流れを説明
するための図である。本マイクロコード生成方式におけ
る処理を次に示す。
1、中間コードであるDAGを入力する。
2、DAG中に中間コード最適化知識ベースの左辺(i
ffils)とパターンマツチする部分を検出する。
3.2.において左辺(if部)がパターンマツチした
DAG中の部分をルールを適用して右辺(then部)
に置き換える。
4、最適化されたDAGの各ノードを実行可能な順に並
べる。
5、DAGの各ノードについて4.で並べた順に第6図
に示す方式に従ってコード生成をおこなう。
次に第4図に示したDAC最適化知識ベースを用いた第
2図(a)の演算DAGの最適化について第2図(b)
〜(i)を用いて説明する。
まず、第2図(a)に示された演算DACに対して第4
図(a)に示すDAG最適化ルールDR木が適用されて
第2図(b)に示すDAGに変換される。
次に、第2図(b)に示された演算DACに対して第4
図(b)に示すDAG最適化ルールのDR2が適用され
て第2図(e)に示すDAGに変換される。
次に、第2図(C)に示された演算DAGに対して第4
図(C)および(d)および(d)に示すDAG最適化
ルールDR3およびDR4が適用されて第2図(d)に
示すDACに変換される。
次に、第2図(d)に示された演算DAGに対して第4
図(e)ら示すDAG最適化ルールDR5が適用されて
第2図(e)に示ずDAGに変換される。
次に、第2図(e)に示された演算DACに対して第4
図(e)および(0に示すDAG最適化ルールDR5お
よびDR6T適用されて第2図(0に示すDACに変換
される。
次に、第2図(e)に示された演算DACに対して第4
図(e)に示すDAC最適化ルールDR5が適用されて
第2図(g)に示すDACに変換される。
次に、第2図(g)に示された演算DACに対して共通
式を削除することにより第2図(h)に示すDAGに変
換される。
次に、第2図(h)に示された演算DACに対して第4
図(g)に示すDAC最適化ルールDR7が適用されて
第2図(i)に示すDAGに変換される。
以上に示した変換により生成された第4図(i)に示す
最適化DAGを実行可能な順にリスト形式に表したもの
を第2表に示す。
第2表 第3表は第3図のアーキテクチャの為の迅thenルー
ル形式のデータパス探索知識ベースである。MRIから
MR8はそれぞれif部が成立した時then部に示さ
れたデータパス上の機能が実現されるターゲットマシン
上の規則である、或いは後ろ向き推論においてはthe
n部に記述されたデータパスを上の機能を実現する為に
は1錯5を実現しなければならないという意味のルール
を表す。第3表においてcode□は0内の命令コード
(マイクロオペレーション)の実行を意味する。またt
hen部において←の左辺は演算結果が格納されるレジ
スタ、←の右辺の第1項はターゲットマシン上の演算機
能、第2項以降は演算入力レジスタを表す。但しdpは
データポインタ、ramはデータメモリ、accrは累
算レジスタ、clrは0クリア機能、a1+はアドレス
インクリメント機能、memはメモリアクセス機能、a
CCは累第3表 第6図は最適化されたDAGの各ノードからコード生成
を行う処理の流れを説明するための図である。DAGの
ノードからのコード生成では以下の処理が行われる。
1、入力されたノードのオペレータ、オペランドの組合
せを対応するターゲットアーキテクチャ上の演算命令、
レジスタの組合せに変換し、これをゴールとする。
2.1.または3.で作成したゴールをthen部とし
てもルールを探索する。
3.2.で求められたルールにより新たなゴールを生成
する。
4.2.で求められたルールによりコード生成を行つ。
5.4.で求められたコードをマイクロイントスラクシ
ョン上に割り付ける。
次に第3表に示したデータパス探索知識ベースを用いた
第2表の最適化DAGからのコード生成について説明す
る。
まず、第2表の1番目の文から生成されるdpに対する
0ロードに対してゴールdp←0が生成される。
このゴールに対しては第3表にルールMR7のthen
部がマツチするため、ルールMR7によりdp+−cl
r dpが新しいゴールとして生成される。このゴール
に対しては第3表のルールMRIのthen部がマツチ
するため、ルールMRIによりコードdpclrが生成
され、第1ステップ目のマイクロインストラクションに
害1り付けられる。
次に、第2表の2番目の文からゴール?X←al + 
dpが生成される。ここで?Xはいかなるパターンにも
マツチするマツチング変数である。このゴールに対して
は第3表のルールMR2のthen部がマツチするため
、ルールMR2によりコードdpincが生成され、第
2ステツプ目のマイクロインストラクションに割り付け
られる。
次に、第2表の3番目の文からゴール’i’x4−ac
c Oramが生成される。このゴールに対しては第3
表のルールMR8およびMR9のthen部がマツチす
る。そこでまずルールMR8を適用した場合はaccr
4−clraccrおよびaccr←ace accr
 ramが新しいゴールとして生成される。ゴールac
crに対しては第3表のルールMR4のthen部がマ
ツチするため、ルールMR4によりコードacclrが
生成される。ゴールaccr+−acc accrra
mに対しては第3表のルールMR5のthen部がマッ
チするため、ルールMR5によりコードaccmが生成
される。一方、ルールMR9を適用した場合はaccr
+−ramが新しいゴールとして生成される。ゴールa
ccr+−ramに対しては第3表のルールMR6のt
hen部がマツチするため、ルールMR6によりコード
1oadが生成される。ここでルールMR8を適用した
場合はaccclr、 accmの2ステツプのコード
が生成され、ルールMR9を適用した場合は1oadの
1ステツプのコードが生成される。そこでここではコス
トの低いMR9が選択されコード1oadが第3ステツ
プ目のマイクロインストラクションに割り付けられる。
次に、第2表の4番目の文からゴール?X←al+dp
が生成される。このゴールに対しては第3表のルールM
R2のthen部がマツチするため、ルールMR2によ
りコードdpincが生成され、第3ステツプ目のマイ
クロインストラクションに割り付けられる。
次に、第2表の5番目の文からゴール?X4−acca
ec1”が生成される。このゴールに対しては第3表に
ルールMR5のthen部がマツチするため、ルールM
R5によりコードaccmが生成され第4ステツプ目の
マイクロインストラクションに割り付けられる。
以上により第2表に示した最適化DAGからの第1表に
示す最適化マイクロコードが生成される。
(発明の効果) 以上説明したように、本発明に従えばシグナルプロセッ
サのような特殊なアーキテクチャを持つマイクロプログ
ラム計算機に対してもアーキテクチャの特徴を生かした
効率の良いコード生成が実現できる。
【図面の簡単な説明】
第1図は本発明の機能ブロック図、第2図は演算DAC
の例とその最適化変換を示す図、第3図は本発明の1実
施例の用いるターゲットマシンの例を示す図、第4図は
本発明の1実施例で用いる中間コード最適化知識ベース
のルール例を示す図、第5図はマイクロコード生成方式
の処理の流れを示す図、第6図はコード生成処理の流れ
を示す図である。 図において 1・・・中間コード入力部、 2・・・中間コード最適化知識ベース、3・・・中間コ
ード最適化推論部、 4・・・データパス探索知識ベース、 5・・・最適データパス推論部、 6・・・コード生成部 である。

Claims (1)

    【特許請求の範囲】
  1. 中間コードを入力すると中間コード入力部と、該中間コ
    ードに対してターゲットマシンノアーキテクチャに対応
    した最適化コード変換を行うのに必要な変換ルールを知
    識ベースとして記憶する中間コード最適化知識ベース記
    憶部と、該中間コード最適化知識ベースに照して、前記
    入力手段により入力された中間コード内にターゲットマ
    シンのアーキテクチャに対応した最適化コード変換でき
    るコードが存在するかを推論しその推論結果により検出
    されたコードに対して最適化コード変換を行う中間コー
    ド最適化推論部と、ターゲットマシンのアーキテクチャ
    において任意のプロセッサリソースに蓄えられたデータ
    に対して必要な演算を施すデータパスおよびこれに付随
    するマイクロコードを探索するのに必要な知識を知識ベ
    ースとして記憶するデータパス探索知識ベース記憶部と
    、該データパス探索知識ベースに照して与えられた任意
    のプロセッサリソースに蓄えられたデータに対して与え
    られた演算を施すデータパスを探索する最適データパス
    推論部と、前記中間コード最適化推論部によって生成さ
    れた最適化中間コードをターゲットマシン上のプロセッ
    サリソースと演算器との組合せに変換してから前記最適
    データパス推論部を用いてマイクロコードを生成するコ
    ード生成部を備えることを特徴とするマイクロコード生
    成方式。
JP12255688A 1988-05-18 1988-05-18 マイクロコード生成方式 Expired - Fee Related JP2722495B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP12255688A JP2722495B2 (ja) 1988-05-18 1988-05-18 マイクロコード生成方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP12255688A JP2722495B2 (ja) 1988-05-18 1988-05-18 マイクロコード生成方式

Publications (2)

Publication Number Publication Date
JPH01291331A true JPH01291331A (ja) 1989-11-22
JP2722495B2 JP2722495B2 (ja) 1998-03-04

Family

ID=14838812

Family Applications (1)

Application Number Title Priority Date Filing Date
JP12255688A Expired - Fee Related JP2722495B2 (ja) 1988-05-18 1988-05-18 マイクロコード生成方式

Country Status (1)

Country Link
JP (1) JP2722495B2 (ja)

Also Published As

Publication number Publication date
JP2722495B2 (ja) 1998-03-04

Similar Documents

Publication Publication Date Title
Chen A parallel language and its compilation to multiprocessor machines or VLSI
GB2474901A (en) Multiply-accumulate instruction which adds or subtracts based on a predicate value
US8578389B1 (en) Method and system for merging directed acyclic graphs representing data flow codes
JP2019511056A (ja) 複素数乗算命令
Padegs et al. The IBM System/370 vector architecture: Design considerations
Barrachina et al. PyDTNN: a user-friendly and extensible framework for distributed deep learning
Lusk Controlling redundancy in large search spaces: Argonne-style theorem proving through the years
Stow et al. Cain: Automatic code generation for simultaneous convolutional kernels on focal-plane sensor-processors
Quinn et al. On the utility of communication–computation overlap in data-parallel programs
JPH09231089A (ja) コンパイラにおけるコードを最適化する装置
JPH01291331A (ja) マイクロコード生成方式
Krohn A parallel approach to code generation for Fortran like compilers
Bruge et al. Concurrent molecular dynamics simulation of ST2 water on a transputer array
RU2818497C1 (ru) Способ распределения данных по монофункциональным блокам процессора с управлением потоком данных
JP3727039B2 (ja) コンパイラにおける乗算実施方法
Frenkel Special issue on parallelism
Liu et al. A framework for exploiting parallelism in Chronolog
Wong Symbolic computing
Du Parallel programming in the intensional language ulucid
Kogge Function-based computing and parallelism: A review
Fostier A BLAS-based algorithm for finding position weight matrix occurrences in DNA sequences on CPUs and GPUs
Plastino et al. A tool for SPMD application development with support for load balancing
Fürtler et al. SPOT—development tool for software pipeline optimization for VLIW-DSPs used in real-time image processing
Mirenkov et al. Multiple function multiple data procedures and parallel programming
JPH04349570A (ja) 情報処理装置

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees