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

マイクロコード生成方式

Info

Publication number
JP2722495B2
JP2722495B2 JP12255688A JP12255688A JP2722495B2 JP 2722495 B2 JP2722495 B2 JP 2722495B2 JP 12255688 A JP12255688 A JP 12255688A JP 12255688 A JP12255688 A JP 12255688A JP 2722495 B2 JP2722495 B2 JP 2722495B2
Authority
JP
Japan
Prior art keywords
code
intermediate code
unit
dag
data path
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
JP12255688A
Other languages
English (en)
Other versions
JPH01291331A (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.)
NEC Corp
Original Assignee
Nippon Electric Co 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 Nippon Electric Co Ltd filed Critical Nippon Electric Co Ltd
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)

Description

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

Claims (1)

    (57)【特許請求の範囲】
  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 JPH01291331A (ja) 1989-11-22
JP2722495B2 true 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)

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
北海道大学工学部研究報告NO.133(1986)P.85−94

Also Published As

Publication number Publication date
JPH01291331A (ja) 1989-11-22

Similar Documents

Publication Publication Date Title
US8549496B2 (en) Method, apparatus and computer program product for automatically generating a computer program using consume, simplify and produce semantics with normalize, transpose and distribute operations
US5790760A (en) Program generating apparatus and method thereof
US8578389B1 (en) Method and system for merging directed acyclic graphs representing data flow codes
JPH06324881A (ja) メモリデータの重なり判定機能を備えたコンパイラ装置
Barrachina et al. PyDTNN: a user-friendly and extensible framework for distributed deep learning
US5781777A (en) Optimization method for computation partitioning oriented to a distributed memory
JP2022524659A (ja) 不必要なデータ移動を回避するためのリシェイプおよびブロードキャストの最適化
JP2001166946A (ja) 階層の平坦化によりソースコードをコンパイルする方法及び装置
Watson et al. Flagship computational models and machine architecture
Quinn et al. On the utility of communication–computation overlap in data-parallel programs
Vasilev et al. Loop-invariant optimization in the Pifagor language
JP2722495B2 (ja) マイクロコード生成方式
JP3175768B2 (ja) 複合型命令スケジューリング処理装置
Gorlatch Stages and transformations in parallel programming
Rico et al. An efficient computation of dempster-shafer theory of evidence based on native gpu implementation
Crespi-Reghizzi et al. PLZ-SYS PL/65 PL/M RPL/2 Mistral PLZ Special Feature A Survey of Microprocessor Languages
Gurd et al. Generation of dataflow graphical object code for the lapse programming language
RU2745018C1 (ru) Способ распараллеливания интеллектуального анализа данных в вычислительной среде
Dieterle et al. Skeleton composition versus stable process systems in Eden
RU2685018C1 (ru) Способ распараллеливания программ в вычислительной системе
Ameen et al. Towards implementation of a generalized architecture for high-level quantum programming language
JPH06103462B2 (ja) ベクトル・レングス制御範囲分割処理方式
Li et al. swTVM: Towards Optimized Tensor Code Generation for Deep Learning on Sunway Many-Core Processor
Wong Symbolic computing
Brodsky On a Structural Approach to the Complex Systems Conceptual Modeling

Legal Events

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