JPH05342012A - コンパイル方法およびコンパイラ - Google Patents

コンパイル方法およびコンパイラ

Info

Publication number
JPH05342012A
JPH05342012A JP17627392A JP17627392A JPH05342012A JP H05342012 A JPH05342012 A JP H05342012A JP 17627392 A JP17627392 A JP 17627392A JP 17627392 A JP17627392 A JP 17627392A JP H05342012 A JPH05342012 A JP H05342012A
Authority
JP
Japan
Prior art keywords
dsp
unit
digital signal
code
language
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.)
Withdrawn
Application number
JP17627392A
Other languages
English (en)
Inventor
Eiji Iwata
英次 岩田
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.)
Sony Corp
Original Assignee
Sony 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 Sony Corp filed Critical Sony Corp
Priority to JP17627392A priority Critical patent/JPH05342012A/ja
Publication of JPH05342012A publication Critical patent/JPH05342012A/ja
Withdrawn legal-status Critical Current

Links

Landscapes

  • Complex Calculations (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【目的】 ディジタルシグナルプロセッサおよび言語に
依存せずに、プログラムをコンパイルする。 【構成】 言語Ln用フロントエンド部1nにおいて、言
語Ln(n=1,2,・・・,N)で記述されたプログ
ラムのソースコードに対して、言語Lnに対応した前処
理が行われ、言語L1乃至LNに共通の中間コードが出力
される。共通モジュール部2において、その中間コード
に対して、言語L1乃至LNおよびDSP1乃至DSPM
依存しない処理が行われ、ディジタルシグナルプロセッ
サDSPm用バックエンド部3m(m=1,2,・・・,
M)において、共通モジュール部2の出力に対して後処
理が施されて、ディジタルシグナルプロセッサDSPm
に対応したオブジェクトコードが出力される。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、例えば音声処理や画像
処理などのディジタル信号処理に用いられるDSP(デ
ィジタルシグナルプロセッサ)のプログラムをコンパイ
ルする場合に用いて好適なコンパイル方法並びにコンパ
イラに関する。
【0002】
【従来の技術】近年の音声処理や画像処理などにおいて
は、多くの場合、信号(音声信号や画像信号)をサンプ
リングし、即ち信号をディジタル化し、例えばDFT
(離散フーリエ変換),FFT(高速フーリエ変換)、
またはDCT(離散コサイン変換)などにより、時間軸
上の信号を周波数軸上の信号(スペクトル)に変換し
て、パラメータの抽出や圧縮符号化処理が行われる。
【0003】このような、ディジタル信号の時間軸と周
波数軸との相互変換(DFT(逆DFT),FFT(逆
FFT)、およびDCT(逆DCT)など)処理に代表
されるディジタル信号処理においては、積和演算の回数
が非常に多く、この処理を、例えば汎用的なCPUなど
で実現した場合には、実時間処理を行うことが困難であ
った。
【0004】そこで、いわゆるパイプライン処理や並列
処理に適したアーキテクチャを有し、積和演算を、例え
ば数10乃至数100n秒で行うことのできる、いわば
積和演算処理を得意とするDSP(ディジタルシグナル
プロセッサ)が開発され、近年、このDSPを用いた多
くのディジタル信号処理装置(例えば画像処理装置や音
声処理装置など)が実現されている。
【0005】
【発明が解決しようとする課題】ところで、このDSP
に、ディジタル信号処理を実行させるには、まず、その
DSP用の言語でディジタル信号処理プログラムを記述
し、そのソースコードをコンパイラでコンパイルしてオ
ブジェクトコードに変換する必要がある。
【0006】しかしながら、ディジタル信号処理プログ
ラムを記述するための言語は、DSPにより異なる場合
が多く、また同じDSPであってもプログラムを記述す
るための言語が複数種類提供されている場合もあり、従
って、例えばM個のDSPのプログラムが、N種類の言
語で記述することができるときには、各DSPおよび各
言語に対応したM×N個のコンパイラを用意しなければ
ならず、不便であった。
【0007】なお、言語がDSPにより異なる場合と
は、言語の種類がDSPにより異なる場合の他、同じ言
語であってもその系統がDSPにより異なる場合(例え
ば、コンピュータ言語でいえば、同じC言語でも、コン
パイラの提供メーカにより異なる場合)を含む。
【0008】さらに、コンパイラは、プログラムをコン
パイルする過程を分割した、複数の論理的な操作単位
(フェーズ)よりなっているが、上述した各DSPおよ
び各言語に対応した各コンパイラには、DSPおよび言
語に依存しない、互いに共用することができるフェーズ
が、少なからず含まれており、各コンパイラにこのフェ
ーズを設けることは無駄であった。
【0009】本発明は、このような状況に鑑みてなされ
たものであり、DSPおよび言語に依存せずに、プログ
ラムをコンパイルすることができるようにするものであ
る。
【0010】
【課題を解決するための手段】請求項1に記載のコンパ
イル方法は、ディジタルシグナルプロセッサのプログラ
ムのソースコードを中間コードに変換し、中間コードを
ディジタルシグナルプロセッサに対応したオブジェクト
コードに変換するコンパイル方法において、中間コード
は、ディジタルシグナルプロセッサのプログラムを記述
するための複数の言語、または複数のディジタルシグナ
ルプロセッサにそれぞれ対応したオブジェクトコードに
共通であることを特徴とする。
【0011】請求項2に記載のコンパイラは、ディジタ
ルシグナルプロセッサDSP1乃至DSPMのプログラム
のソースコードを中間コードに変換する前処理手段とし
てのフロントエンド部1(言語L1用フロントエンド部
1乃至言語LN用フロントエンド部1N)と、フロント
エンド部1より出力される中間コードを解析して最適化
する共通処理手段としての共通モジュール部2と、共通
モジュール部2からの出力をディジタルシグナルプロセ
ッサDSP1乃至DSPMに対応したオブジェクトコード
に変換する後処理手段としてのバックエンド部3(DS
1用バックエンド部31乃至DSPM用バックエンド部
M)とを備え、フロントエンド部1(言語L1用フロン
トエンド部11乃至言語LN用フロントエンド部1N
は、ディジタルシグナルプロセッサDSP1乃至DSPM
のプログラムを記述するための複数の言語L1乃至LN
共通の中間コードを出力し、バックエンド部3(DSP
1用バックエンド部31乃至DSPM用バックエンド部
M)は、中間コードを複数のディジタルシグナルプロ
セッサDSP1乃至DSPMにそれぞれ対応したオブジェ
クトコードに変換することを特徴とする。
【0012】請求項3に記載のコンパイラは、共通モジ
ュール部2に、中間コードに対して、DSP1乃至DS
Mのどれにも依存しない最適化処理を施させることを
特徴とする。
【0013】請求項4に記載のコンパイラは、バックエ
ンド部3(DSP1用バックエンド部31乃至DSPM
バックエンド部3M)に、中間コードを並列に実行可能
な単位に分割させ、DSP1乃至DSPMに割り当てさせ
ることを特徴とする。
【0014】請求項5に記載のコンパイラは、バックエ
ンド部3(DSP1用バックエンド部31乃至DSPM
バックエンド部3M)に、レジスタ割付を行わせること
を特徴とする。
【0015】
【作用】請求項1に記載のコンパイル方法においては、
ディジタルシグナルプロセッサのプログラムのソースコ
ードを、ディジタルシグナルプロセッサのプログラムを
記述するための複数の言語、または複数のディジタルシ
グナルプロセッサにそれぞれ対応したオブジェクトコー
ドに共通の中間コードに変換し、その中間コードをディ
ジタルシグナルプロセッサに対応したオブジェクトコー
ドに変換する。従って、DSP(ディジタルシグナルプ
ロセッサ)および言語に依存せずに、プログラムをコン
パイルすることができる。
【0016】請求項2に記載のコンパイラにおいては、
DSP1乃至DSPMのプログラムのソースコードを言語
1乃至LNに共通の中間コードに変換し、その中間コー
ドを解析して最適化する。そして、最適化した中間コー
ドをDSP1乃至DSPMにそれぞれ対応したオブジェク
トコードに変換する。従って、DSP(ディジタルシグ
ナルプロセッサ)および言語に依存せずに、プログラム
をコンパイルすることができる。
【0017】請求項3に記載のコンパイラにおいては、
共通モジュール部2に、中間コードに対して、DSP1
乃至DSPMのどれにも依存しない最適化処理を施させ
るので、重複したフェーズによる無駄な処理が防止され
る。
【0018】請求項4に記載のコンパイラは、バックエ
ンド部3(DSP1用バックエンド部31乃至DSPM
バックエンド部3M)に、中間コードを並列に実行可能
な単位に分割させ、DSP1乃至DSPMに割り当てさせ
るので、並列処理をすることができるDSP(ディジタ
ルシグナルプロセッサ)の機能を有効に利用することが
できる。
【0019】請求項5に記載のコンパイラは、バックエ
ンド部3(DSP1用バックエンド部31乃至DSPM
バックエンド部3M)に、レジスタ割付を行わせるの
で、DSP(ディジタルシグナルプロセッサ)のレジス
タを効率的に利用することができる。
【0020】
【実施例】図1は、本発明のコンパイラの一実施例の構
成を示すブロック図である。フロントエンド部1は、M
個のディジタルシグナルプロセッサDSP1乃至DSPM
(以下、DSP1乃至DSPM)のいずれかのプログラム
記述用言語L1乃至LNで記述されたプログラムのソース
コードを、言語L1乃至LNに共通の中間言語で記述され
る中間コードにそれぞれ変換する言語L1用フロントエ
ンド部11乃至言語LN用フロントエンド部1Nから構成
される。各言語Ln用フロントエンド部1n(n=1,
2,・・・,N)は、図2に示すフェーズ(コンパイル
の処理単位)としての、字句解析部11n、構文解析部
12n、および意味解析部13nから構成され、言語Ln
に依存した処理を行う。
【0021】即ち、言語Ln用フロントエンド部1nの字
句解析部11nは、言語Lnで記述されたプログラムのソ
ースコードを、論理的に扱うことのできる最小単位の文
字列(字句)に分離する。構文解析部12nは、字句解
析部11nより出力される字句からなる構文を構造解析
し、言語Lnの構文構造として許されているか否かを検
査(構文チェック)する。意味解析部13nは、字句か
らなる構文を意味解析し、構文の意味上の間違いをチェ
ックし、間違いがなければソースコードを、言語L1
至LNのすべてに共通の中間コードに変換する。
【0022】共通モジュール部2は、図3に示すフェー
ズとしての依存解析部21および最適化部22より構成
され、言語L1用フロントエンド部11乃至言語LN用フ
ロントエンド部1Nから出力される中間コードに対し
て、言語L1乃至LNおよびDSP1乃至DSPMに依存し
ない処理を行う。
【0023】即ち、共通モジュール部2の依存解析部2
1は、フロントエンド部1より出力される中間コードに
おける、データの参照または定義の依存関係(データ依
存)を解析し、この依存関係(データ依存)を、いわゆ
るデータフローグラフと呼ばれるデータ構造に変換す
る。最適化部22は、必要に応じて依存解析部21で作
成されたデータフローグラフを参照し、フロントエンド
部1より出力される中間コードに対して、例えば定数の
畳み込みや共通部分式の識別など、言語L1乃至LNおよ
びDSP1乃至DSPMに依存しない最適化処理を施す。
【0024】バックエンド部3は、共通モジュール部2
で最適化された中間コードから、DSP1乃至DSPM
対応したオブジェクトコードをそれぞれ生成するDSP
1用バックエンド部31乃至DSPM用バックエンド部3M
から構成される。各DSPm用バックエンド部3m(m=
1,2,・・・,M)は、図4に示すフェーズとして
の、スケジューリング部31m、コード生成/レジスタ
割付部32m、および最適化部33mから構成され、DS
mに依存した処理を行う。
【0025】即ち、スケジューリング部31mは、例え
ばDSPmのアーキテクチャが並列処理を行うことがで
きるものである場合、共通モジュール部2で最適化され
た中間コードを、並列に実行可能な単位(タスク)に分
割し、DSPmを構成する、例えばALU、乗算器、加
算器、またはシフタなどに割り当てる。コード生成/レ
ジスタ割付部32mは、共通モジュール部2(最適化部
22)より出力される中間コードから、DSPmに対応
したオブジェクトコードを生成するとともに、DSPm
の有するレジスタに、効率的に変数を割り付けるための
レジスタ割付を行う。最適化部33mは、必要に応じて
共通モジュール部2の依存解析部21で作成されたデー
タフローグラフを参照し、コード生成/レジスタ割付部
32mで生成されたDSPmに対応したオブジェクトコー
ドに対して、DSPmに依存した最適化処理を施す。
【0026】このように構成されるコンパイラにおい
て、言語Lnで記述されたDSPm用のプログラムがコン
パイルされる場合、まずフロントエンド部1の言語Ln
用フロントエンド部1nにそのプログラムが読み込まれ
る。そして、言語Ln用フロントエンド部1nの字句解析
部11n(図2)において、言語Lnで記述されたプログ
ラムのソースコードが、例えば手掛かり語(例えば、C
言語やFORTRANでいうところのdo,while,if、お
よびforなど)、識別子(例えば、プログラムにおける
変数など)、定数、並びに演算子(例えば、+,−,
*、および/など)など、論理的に扱うことのできる最
小単位の文字列(字句)に分離される。
【0027】即ち、字句解析部11nにおいて、例えば IF (5.EQ.MAX) GOTO 100 というFORTRAN文は、 IF,(,5,.EQ.,MAX,),GOTO、およ
び100 という8つの字句に分離される。
【0028】字句解析部11nで分離された字句は構文
解析部12nに入力され、構文解析部12nにおいて、こ
の字句からなる構文が構造解析され、言語Lnの構文構
造として許されているか否かが検査(構文チェック)さ
れる。即ち、例えば字句A,+、およびBが入力された
場合、構文解析部12nにおいて、字句A,+、および
Bからなる構文A+Bが、式と名付ける構文構造を有す
ると構造解析され、構文A+Bが言語Lnで記述された
式として許されているか否かが検査(構文チェック)さ
れる。構文解析部12nで、任意の構文が、構文チェッ
クで使用不可と判定された場合には、コンパイル(以後
の処理)が中止される。
【0029】構文解析部12nでの構文チェックをパス
した構文は、意味解析部13nで、意味解析され、構文
の意味上の間違いがチェックされる。即ち、意味解析部
13nにおいて、例えば整数型の変数A、演算子+、お
よび実数型の変数Bの3つの字句からなる構文A+B
が、整数型と実数型の加算式であると解析され、整数と
実数との加算が間違いか否かがチェックされる。言語L
nの仕様で、整数と実数との加算が許されていなけれ
ば、意味解析部13nで、構文A+Bは使用不可とさ
れ、コンパイル(以後の処理)が中止される。
【0030】意味解析部13nで、構文の意味上の間違
いがチェックされた構文に間違いがなければ、ソースコ
ードが、言語L1乃至LNのすべてに共通の中間コードに
変換され、共通モジュール部2の依存解析部21(図
3)に出力される。
【0031】依存解析部21において、意味解析部13
nより出力された中間コードにおける、データの参照ま
たは定義の依存関係(データ依存)が解析され、この依
存関係(データ依存)が、いわゆるデータフローグラフ
と呼ばれるデータ構造に変換される。
【0032】即ち、例えば A=B+C (1) B=A+E (2) B=F+G (3) という3つの式が、式(1),(2),(3)の順番で
実行されるように、プログラムが記述されているとする
と、依存解析部21では、 ・式(1)で定義されたAが式(2)で参照されている
(フロー依存)。 ・式(1)で参照されたBが式(2)で定義されている
(逆依存)。 ・式(1)で参照されたBが式(3)で定義されている
(逆依存)。 ・式(2)で定義されたBが式(3)で再定義されてい
る(出力依存)。 のように依存解析がなされ、このデータの参照または定
義の依存関係(データ依存)がいわゆるデータフローグ
ラフと呼ばれるデータ構造に変換される。
【0033】依存解析部21でデータフローグラフが作
成された後、最適化部22において、必要に応じてこの
データフローグラフが参照され、意味解析部13nより
出力された中間コードに対して、例えば定数の畳み込み
や共通部分式の識別など、DSP1乃至DSPMに依存し
ない最適化処理が施される。
【0034】即ち、例えば I=4 A=I*B という構文がプログラムの中に言語Lnで記述されてい
ると、最適化部22において、上記の構文は、 A=4*B と最適化され、これにより定義(I=4)の回数を減ら
すことができる。
【0035】また、例えば A[I+1]=B[I+1]*C[I+1] いう構文がプログラムの中に言語Lnで記述されている
と、最適化部22において、上記の構文は、 J=I+1 A[J]=B[J]*C[J] と最適化され、これにより加算(I+1)の回数を3回
から1回に減らすことができる。
【0036】共通モジュール部2の最適化部22で最適
化された中間コードは、DSPm用バックエンド部3m
スケジューリング部31m(図4)に出力され、スケジ
ューリング部31mにおいて、DSPmのアーキテクチャ
が並列処理を行うことができるものである場合には、共
通モジュール部2で最適化された中間コードが、並列に
実行可能な単位(タスク)に分割され、分割された各タ
スクが、DSPmを構成する、例えばALU、乗算器、
加算器、またはシフタなどに割り当てられる(スケジュ
ーリングされる)。
【0037】そして、コード生成/レジスタ割付部32
mにおいて、共通モジュール部2の最適化部22より出
力された中間コードから、DSPmに対応したオブジェ
クトコードが生成されるとともに、DSPmの有するレ
ジスタに、効率的に変数を割り付けるためのレジスタ割
付が行われ、DSPmに対応したオブジェクトコードが
最適化部33mに出力される。最適化部33mにおいて、
必要に応じて共通モジュール部2の依存解析部21で作
成されたデータフローグラフが参照され、コード生成/
レジスタ割付部32mより出力されたオブジェクトコー
ドに対して、DSPmに依存した最適化処理が施され、
言語Lnで記述されたDSPm用のプログラムのコンパイ
ルが終了する。
【0038】以下、DSPm で3タップのFIR型ディ
ジタルフィルタを実現するプログラム y(0)=h(0)*x(0)+h(1)*x(1)+h(2)*x(2) y(1)=h(0)*x(1)+h(1)*x(2)+h(2)*x(3) y(2)=h(0)*x(2)+h(1)*x(3)+h(2)*x(4) を例にして、DSPm用バックエンド部3mのスケジュー
リング部31m、コード生成/レジスタ割付部32m、お
よび最適化部33mの動作を、さらに説明する。なお、
このプログラムにおいて、h(0),h(1)、および
h(2)はフィルタの係数、x(0),x(1),・・
・はフィルタへの入力信号、y(0),y(1),・・
・はフィルタ出力を示す。
【0039】上記のソースコードを中間コードで表現す
ると、 temp1=h(0)*x(0) (a1) temp2=h(1)*x(1) (a2) temp3=h(2)*x(2) (a3) temp4=temp1+temp2 (a4) y(0)=temp3+temp4 (a5) temp5=h(0)*x(1) (b1) temp6=h(1)*x(2) (b2) temp7=h(2)*x(3) (b3) temp8=temp5+temp6 (b4) y(1)=temp7+temp8 (b5) temp9=h(0)*x(2) (c1) temp10=h(1)*x(3) (c2) temp11=h(2)*x(4) (c3) temp12=temp9+temp10 (c4) y(2)=temp11+temp12 (c5) となる。
【0040】ここで、DSPmが、充分な数のレジスタ
を有するとすると、式(a1)乃至(a5)、式(b
1)乃至(b5)、および式(c1)乃至(c5)(以
下、式(a1)乃至(c5)と記載する)のデータ依存
は、前述したフロー依存のみとなり、式(a1)および
式(a2)での定義が、式(a4)で参照されていると
いうフロー依存を (a1),(a2)→(a4) と表すと、式(a1)乃至(a5)、式(b1)乃至
(b5)、および式(c1)乃至(c5)のデータ依存
は、 (a1),(a2)→(a4) (a3),(a4)→(a5) (b1),(b2)→(b4) (b3),(b4)→(b5) (c1),(c2)→(c4) (c3),(c4)→(c5) となる。
【0041】DSPmが並列に実行可能なアーキテクチ
ャを有さない場合、即ち例えば演算器として2入力1出
力の演算器を1つだけDSPmが有する場合、スケジュ
ーリング部31mにおいて、式(a1)乃至(c5)で
示される演算が、DSPmが内蔵する1つだけの演算器
に、図5に示すように割り当てられる(スケジューリン
グされる)。
【0042】即ち、DSPmが内蔵する演算器が1クロ
ックで動作するとすると、スケジューリング部31m
は、式(a1)乃至(c5)で示される演算が、それぞ
れ1乃至15クロック目に、演算器で行われるように割
り当てられる。
【0043】また、DSPmが並列に実行可能なアーキ
テクチャを有する場合、即ち例えば演算器として、9個
の、2入力1出力の乗算器X1乃至X9、および6個の、
2入力1出力の加算器Y1乃至Y6をDSPmが有する場
合、スケジューリング部31mにおいて、式(a1)乃
至(c5)で示される演算が、DSPmが内蔵する乗算
器X1乃至X9および加算器Y1乃至Y6に、図6に示すよ
うに割り当てられる(スケジューリングされる)。
【0044】即ち、乗算器X1乃至X9および加算器Y1
乃至Y6が1クロックで動作するとすると、スケジュー
リング部31mにおいて、1クロック目に、式(a1)
乃至(a3)、式(b1)乃至(b3)、または式(c
1)乃至(c3)で示される演算(乗算)が、乗算器X
1乃至X9でそれぞれ行われるように割り当てられ、2ク
ロック目に、式(a4),(b4)、または(c4)で
示される演算(加算)が、加算器Y1,Y3、またはY5
でそれぞれ行われるように割り当てられるとともに、3
クロック目に、式(a5),(b5)、または(c5)
で示される演算(加算)が、加算器Y2,Y4、またはY
6でそれぞれ行われるように割り当てられる。
【0045】さらに、DSPmが、例えば演算器とし
て、3個の、2入力1出力の乗算器X1乃至X3、並びに
2個の、2入力1出力の加算器Y1およびY2を有する場
合、スケジューリング部31mにおいて、式(a1)乃
至(c5)で示される演算が、DSPmが内蔵する乗算
器X1乃至X3並びに加算器Y1およびY2に、図7に示す
ように割り当てられる(スケジューリングされる)。
【0046】即ち、乗算器X1乃至X3並びに加算器Y1
およびY2が1クロックで動作するとすると、スケジュ
ーリング部31mにおいて、1クロック目に、式(a
1)乃至(a3)で示される演算が、乗算器X1乃至X3
でそれぞれ行われるように割り当てられ、2クロック目
に、式(b1)乃至(b3)、または式(a4)で示さ
れる演算が、乗算器X1乃至X3、または加算器Y1でそ
れぞれ行われるように割り当てられるとともに、3クロ
ック目に、式(c1)乃至(c3)、式(b4)、また
は式(a5)で示される演算が、乗算器X1乃至X3、加
算器Y1またはY2でそれぞれ行われるように割り当てら
れる。さらに、4クロック目には、式(c4)または式
(b5)で示される演算が、加算器Y1またはY2でそれ
ぞれ行われるように割り当てられ、5クロック目に、式
(c5)で示される演算が、加算器Y2で行われるよう
に割り当てられる。
【0047】また、DSPmが、例えば演算器として、
2個の、2入力1出力の乗算器X1およびX2、並びに1
個の、2入力1出力の加算器Y1を有する場合、スケジ
ューリング部31mにおいて、式(a1)乃至(c5)
で示される演算が、DSPmが内蔵する乗算器X1および
2並びに加算器Y1に、図8に示すように割り当てられ
る(スケジューリングされる)。
【0048】即ち、乗算器X1およびX2並びに加算器Y
1が1クロックで動作するとすると、スケジューリング
部31mにおいて、乗算器X1で、式(a1),(a
3),(b2),(c1)、または(c3)で示される
演算が、1乃至5クロック目にそれぞれ行われるように
割り当てられ、乗算器X2で、式(a2),(b1),
(b3)、または(c2)で示される演算が、1乃至4
クロック目にそれぞれ行われるように割り当てられると
ともに、加算器Y1で、式(a4),(a5),(b
4),(b5),(c4)、または(c5)で示される
演算が、2乃至7クロック目にそれぞれ行われるように
割り当てられる。
【0049】スケジューリング部31mでのスケジュー
リングが終了すると、コード生成/レジスタ割付部32
mにおいて、DSPmの有するレジスタに、効率的に変数
を割り付けるためのレジスタ割付が行われながら、式
(a1)乃至式(c5)に示す中間コードから、DSP
mに対応したオブジェクトコードが生成される。
【0050】DSPmが3つのレジスタreg1乃至r
eg3を有する場合、コード生成/レジスタ割付部32
mにおいて、式(a1)乃至式(c5)における変数t
emp1乃至temp12が、レジスタreg1乃至r
eg3に割り付けられながら、式(a1)乃至式(c
5)で示された中間コードから、DSPmに対応したオ
ブジェクトコードが、例えば MUL h(0),x(0),reg1 (A1) MUL h(1),x(1),reg2 (A2) MUL h(2),x(2),reg3 (A3) ST reg3,mem1 (A4) ADD reg1,reg2,reg3 (A5) LD mem1,reg1 (A6) ADD reg1,reg3,y(0) (A7) MUL h(0),x(1),reg1 (B1) MUL h(1),x(2),reg2 (B2) MUL h(2),x(3),reg3 (B3) ST reg3,mem2 (B4) ADD reg1,reg2,reg3 (B5) LD mem2,reg1 (B6) ADD reg1,reg3,y(1) (B7) MUL h(0),x(2),reg1 (C1) MUL h(1),x(3),reg2 (C2) MUL h(2),x(4),reg3 (C3) ST reg3,mem3 (C4) ADD reg1,reg2,reg3 (C5) LD mem3,reg1 (C6) ADD reg1,reg3,y(2) (C7) のように生成される。
【0051】オブジェクトコード(A1)乃至(A3)
は、 reg1=h(0)*x(0), reg2=h(1)*x(1)、または reg3=h(2)*x(2) をそれぞれ示し、式(a1)乃至(a3)に対応する。
DSPmには、3つのレジスタreg1乃至reg3し
かないので、式(a4)を計算するために、オブジェク
トコード(A4)で、レジスタreg3の内容(式(a
3)の変数temp3の内容)がスタックmem1に退
避され(ストアされ)、オブジェクトコード(A5)
で、式(a4)に対応する reg3=reg1+reg2 が計算される。
【0052】そして、オブジェクトコード(A6)で、
スタックmem1にストアされた式(a3)の変数te
mp3の内容(h(2)*x(2))が、レジスタre
g1にロードされ、オブジェクトコード(A7)で、式
(a5)に対応する y(0)=reg1+reg3 が計算される。
【0053】オブジェクトコード(B1)乃至(B
7)、または(C1)乃至(C7)でも、上記したオブ
ジェクトコード(A1)乃至(A7)における場合と同
様にして、式(b1)乃至(b5)、または(c1)乃
至(c5)にそれぞれ対応する処理がなされる。
【0054】なお、DSPmが、例えば1クロックで動
作する演算器として、3個の、2入力1出力の乗算器X
1乃至X3、並びに2個の、2入力1出力の加算器Y1
よびY2を有し、データのロードおよびストアを1クロ
ックで行うとすると、上記のオブジェクトコード(A
1)乃至(A7),(B1)乃至(B7)、および(C
1)乃至(C7)は、図9に示すように実行される。
【0055】即ち、1クロック目に、オブジェクトコー
ド(A1)乃至(A3)に対応する式(a1)乃至(a
3)で示される演算が、乗算器X1乃至X3でそれぞれ行
われ、2クロック目に、オブジェクトコード(B1)乃
至(B3)に対応する式(b1)乃至(b3)で示され
る演算が、乗算器X1乃至X3でそれぞれ行われるととも
に、オブジェクトコード(A4)に対応するレジスタr
eg3のスタックmem1へのストアが行われる。
【0056】3クロック目に、オブジェクトコード(C
1)乃至(C3)または(A5)に対応する式(c1)
乃至(c3)、または式(a4)で示される演算が、乗
算器X1乃至X3、加算器Y1でそれぞれ行われるととも
に、オブジェクトコード(B4)に対応するレジスタr
eg3のスタックmem2へのストアが行われ、4クロ
ック目に、オブジェクトコード(B5)に対応する式
(b4)で示される演算が、加算器Y1で行われるとと
もに、オブジェクトコード(C4)に対応するレジスタ
reg3のスタックmem3へのストアと、オブジェク
トコード(A6)に対応するスタックmem1からレジ
スタreg1へのロードが行われる。
【0057】5クロック目には、オブジェクトコード
(C5)または(A7)に対応する式(c4)または
(a5)で示される演算が、加算器Y1またはY2でそれ
ぞれ行われるとともに、オブジェクトコード(B6)に
対応するスタックmem2からレジスタreg1へのロ
ードが行われ、6クロック目に、オブジェクトコード
(B7)に対応する式(b5)で示される演算が、加算
器Y2で行われるとともに、オブジェクトコード(C
6)に対応するスタックmem3からレジスタreg1
へのロードが行われる。
【0058】そして、7クロック目に、オブジェクトコ
ード(C7)に対応する式(c5)で示される演算が、
加算器Y2で行われ、処理を終了する。
【0059】次に、上記のような、DSPmに対応した
オブジェクトコードが、最適化部33mに供給される
と、最適化部33mにおいて、このオブジェクトコード
に対して、DSPmに依存した最適化処理が施される。
【0060】即ち、例えば LD mem,reg (D1) ST reg,mem (D2) のような、メモリmemからレジスタregにデータを
ロードし(D1)、すぐにレジスタregのデータをメ
モリmemにストアする(D2)ことを示すオブジェク
トコードにおいては、同じ内容(データ)を、メモリm
emにストアすることは無駄であるから、最適化部33
mにおいて、オブジェクトコード(D2)が削除される
(冗長なロード/ストア命令の削除)。
【0061】また、例えば ADD 0,reg,reg (E1) MUL 1,reg,reg (E2) のような、レジスタregに0を加算して、レジスタr
egに記憶させたり(E1)、レジスタregに1を乗
じて、レジスタregに記憶させたりする(E2)オブ
ジェクトコードにおいては、0の加算や1の乗算は結果
が変わらないので、やはり無駄であるから、最適化部3
mにおいて、オブジェクトコード(E1)および(E
1)とも削除される(代数的簡約化)。
【0062】以上のように、このコンパイラでは、プロ
グラムを記述した言語L1乃至LNに対応した言語L1
フロントエンド部11乃至言語LNフロントエンド部1N
で前処理を行い、DSP1乃至DSPMに対応したオブジ
ェクトコードを出力するDSP1用バックエンド部31
至DSPM用バックエンド部3Mで後処理を行うととも
に、言語L1乃至LNおよびDSP1乃至DSPMに依存し
ない処理(フェーズ)を共通モジュール部2で行うよう
にしたので、言語L1乃至LNのうちのどの言語で記述さ
れたプログラムでも、また、DSP1乃至DSPMのうち
のどのDSPに対応するプログラムでもコンパイルする
ことができる。
【0063】
【発明の効果】請求項1に記載のコンパイル方法によれ
ば、ディジタルシグナルプロセッサ(DSP)のプログ
ラムのソースコードを、DSPのプログラムを記述する
ための複数の言語、または複数のDSPにそれぞれ対応
したオブジェクトコードに共通の中間コードに変換し、
その中間コードをDSPに対応したオブジェクトコード
に変換する。従って、DSPおよび言語に依存せずに、
プログラムをコンパイルすることができる。
【0064】請求項2に記載のコンパイラによれば、デ
ィジタルシグナルプロセッサ(DSP)のプログラムの
ソースコードを言語に共通の中間コードに変換し、その
中間コードを解析して最適化する。そして、最適化した
中間コードを複数のDSPにそれぞれ対応したオブジェ
クトコードに変換する。従って、DSPおよび言語に依
存せずに、プログラムをコンパイルすることができる。
【0065】請求項3に記載のコンパイラによれば、共
通処理手段に、中間コードに対して、複数のDSPのど
れにも依存しない最適化処理を施させるので、重複した
フェーズによる無駄な処理が防止される。
【0066】請求項4に記載のコンパイラは、後処理手
段に、中間コードを並列に実行可能な単位に分割させ、
DSPに割り当てさせるので、並列処理をすることがで
きるDSPの機能を有効に利用することができる。
【0067】請求項5に記載のコンパイラは、後処理手
段に、レジスタ割付を行わせるので、DSPのレジスタ
を効率的に利用することができる。
【図面の簡単な説明】
【図1】本発明のコンパイラの一実施例の構成を示すブ
ロック図である。
【図2】図1の実施例の言語L1用フロントエンド部11
乃至言語LNフロントエンド部1Nのより詳細を示す図で
ある。
【図3】図1の実施例の共通モジュール部2のより詳細
を示す図である。
【図4】図1の実施例のDSP1用バックエンド部31
至DSPM用バックエンド部3Mのより詳細を示す図であ
る。
【図5】図4のスケジューリング部で行われるスケジュ
ーリングを説明するための図である。
【図6】図4のスケジューリング部で行われるスケジュ
ーリングを説明するための図である。
【図7】図4のスケジューリング部で行われるスケジュ
ーリングを説明するための図である。
【図8】図4のスケジューリング部で行われるスケジュ
ーリングを説明するための図である。
【図9】図4のコード生成/レジスタ割付部32mで生
成されたDSPmに対応したオブジェクトコードが実行
される様子を説明するための図である。
【符号の説明】
1 フロントエンド部 11乃至1N 言語L1用フロントエンド部乃至言語LN
ロントエンド部 2 共通モジュール部 3 バックエンド部 31乃至3M DSP1用バックエンド部乃至DSPM用バ
ックエンド部 11n 字句解析部 12n 構文解析部 13n 意味解析部 21 依存解析部 22 最適化部 31m スケジューリング部 32m コード生成/レジスタ割付部 33m 最適化部

Claims (5)

    【特許請求の範囲】
  1. 【請求項1】 ディジタルシグナルプロセッサのプログ
    ラムのソースコードを中間コードに変換し、 前記中間コードを前記ディジタルシグナルプロセッサに
    対応したオブジェクトコードに変換するコンパイル方法
    において、 前記中間コードは、前記ディジタルシグナルプロセッサ
    のプログラムを記述するための複数の言語、または複数
    のディジタルシグナルプロセッサにそれぞれ対応したオ
    ブジェクトコードに共通であることを特徴とするコンパ
    イル方法。
  2. 【請求項2】 ディジタルシグナルプロセッサのプログ
    ラムのソースコードを中間コードに変換する前処理手段
    と、 前記前処理手段より出力される中間コードを解析して最
    適化する共通処理手段と、 前記共通処理手段からの出力を前記ディジタルシグナル
    プロセッサに対応したオブジェクトコードに変換する後
    処理手段とを備え、 前記前処理手段は、前記ディジタルシグナルプロセッサ
    のプログラムを記述するための複数の言語に共通の中間
    コードを出力し、 前記後処理手段は、前記中間コードを複数のディジタル
    シグナルプロセッサにそれぞれ対応したオブジェクトコ
    ードに変換することを特徴とするコンパイラ。
  3. 【請求項3】 前記共通処理手段は、前記中間コードに
    対して、前記複数のディジタルシグナルプロセッサのど
    れにも依存しない最適化処理を施すことを特徴とする請
    求項2に記載のコンパイラ。
  4. 【請求項4】 前記後処理手段は、前記中間コードを並
    列に実行可能な単位に分割し、前記ディジタルシグナル
    プロセッサに割り当てることを特徴とする請求項2また
    は3に記載のコンパイラ。
  5. 【請求項5】 前記後処理手段は、レジスタ割付を行う
    ことを特徴とする請求項2,3、または4に記載のコン
    パイラ。
JP17627392A 1992-06-10 1992-06-10 コンパイル方法およびコンパイラ Withdrawn JPH05342012A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP17627392A JPH05342012A (ja) 1992-06-10 1992-06-10 コンパイル方法およびコンパイラ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP17627392A JPH05342012A (ja) 1992-06-10 1992-06-10 コンパイル方法およびコンパイラ

Publications (1)

Publication Number Publication Date
JPH05342012A true JPH05342012A (ja) 1993-12-24

Family

ID=16010697

Family Applications (1)

Application Number Title Priority Date Filing Date
JP17627392A Withdrawn JPH05342012A (ja) 1992-06-10 1992-06-10 コンパイル方法およびコンパイラ

Country Status (1)

Country Link
JP (1) JPH05342012A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008505422A (ja) * 2004-07-02 2008-02-21 エヌヴィディア コーポレイション 頂点及びフラグメントプログラムの最適化されたチェイニング
JP2011501325A (ja) * 2007-10-26 2011-01-06 クゥアルコム・インコーポレイテッド サーバ−ベースのコードコンパイル
US9075913B2 (en) 2012-02-27 2015-07-07 Qualcomm Incorporated Validation of applications for graphics processing unit

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008505422A (ja) * 2004-07-02 2008-02-21 エヌヴィディア コーポレイション 頂点及びフラグメントプログラムの最適化されたチェイニング
JP2011501325A (ja) * 2007-10-26 2011-01-06 クゥアルコム・インコーポレイテッド サーバ−ベースのコードコンパイル
US9075913B2 (en) 2012-02-27 2015-07-07 Qualcomm Incorporated Validation of applications for graphics processing unit

Similar Documents

Publication Publication Date Title
Leupers Retargetable code generation for digital signal processors
Huang et al. Pylog: An algorithm-centric python-based FPGA programming and synthesis flow
Goossens et al. Embedded software in real-time signal processing systems: Design technologies
JP7669342B2 (ja) 手続き型プログラミング言語で書かれたプログラムのデータフローグラフへの自動転換並びに関連するシステム及び方法
Franke et al. Array recovery and high-level transformations for DSP applications
Cattaneo et al. TAFFO: The compiler-based precision tuner
Zhang et al. Snowflake: A lightweight portable stencil dsl
JPH05342012A (ja) コンパイル方法およびコンパイラ
Gauthier et al. HDLRuby: A Ruby extension for hardware description and its translation to synthesizable Verilog HDL
Hinsen et al. Using B SP and Python to simplify parallel programming
Brandner et al. Automatic generation of compiler backends
JP7407192B2 (ja) フィールド・プログラマブル・ゲート・アレイのためのコードを最適化する方法および装置
Rudi et al. CodeFlow: A code generation system for Flash-X orchestration runtime
Becker et al. From scilab to high performance embedded multicore systems: The alma approach
Zou et al. Aquas: Enhancing Domain Specialization through Holistic Hardware-Software Co-Optimization based on MLIR
Nawaz et al. Recursive variable expansion: A loop transformation for reconfigurable systems
Parfieniuk et al. A Compiler for a Domain-Specific Language for Rapid Implementation of DSP Transforms and Filter Banks
EP3827336B1 (en) Method and apparatus for optimizing code for field programmable gate arrays
Henriques et al. Using source-to-source to target risc-v custom extensions: Uve case-study
Mego et al. Tool for algorithms mapping with help of signal-flow graph approach
Ding Automated translation between graphical and textual representations of intensional programs in the GIPSY
Kasyanov et al. Methods and Tools for Constructing Specialized Versions of General-Purpose Cloud Sisal Programs
Silverthorn et al. Guidelines for software development efficiency on the TMS320C6000 VelociTI architecture
Tabbara et al. Architectural Optimizations
Latifis et al. A Retargetable MATLAB-to-C Compiler Exploiting Custom Instructions and Data Parallelism

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 19990831