C-05

VLIW 型 DSP 用リターゲッタブル・リニアアセンブラの構成
Retargetable Linear Assembler for VLIW DSP
野垣内 聡 †
Satoshi Nogaito
1

石浦 菜岐佐 †Nagisa Ishiura

はじめに
近年, ディジタル機器への搭載を目的に, 特定の応用に命令セットやハードウェア構成を最適化したカスタムプロセッサを使用することが多くなっている. 特に複数の演算器を持ち, 静的スケジューリングにより複数命令を並列に処理する VLIW型 DSP は低消費電力かつ高速に命令を実行できるため, 性能を要求される応用に適していると考えられる. 我々は VLIW 型
DSP を対象とするソフトウェア開発ツールとして, リターゲッ
タブル・リニアアセンブラを開発している. リターゲッタブル・
リニアアセンブラは対象とするプロセッサのアーキテクチャ記
述とリニアアセンブリ (ハードウェアの詳細を意識せずにコーディングができる高レベルアセンブリ) を入力とし, 最適化されたアセンブリを出力する. 本稿ではリターゲッタブル・リニアアセンブラとその構成について述べる.

21:
MVK .S1 50, A22:|| ZERO.L1 A6
3:|| ZERO.L2 B6
4:L1:
LDW .D1 *A3++, A5
5:|| LDW .D2 *B3++, B5
6:
NOP
47:
MPY .M1 A5, B5, A6
8:|| MPYH.M2 A5, B5, B6
9:
ADD .L1 A6, A7, A7
10:|| ADD .L2 B6, B7, B7
11:
ADD .L1 A7, B7, A4
12: [A2]SUB .L1 A2, 1, A2
13: [A2] B .S1 L1

1:
MVK 50, i
2:ZERO sum0
3:ZERO sum1
4:L1: LDW *a++, val1
5:
LDW *b++, val2
6:
MPY val1, val2, p1
7:
MPYH val1, val2, p2
8:
ADD p1, sum0, sum0
9:
ADD p2, sum1, sum1
10:
ADD sum0, sum1, A4
11: [i]SUBi,1, i
12: [i] B L1(a) アセンブリ(b) リニアアセンブリ

図 1: TMS320C62x のアセンブリとリニアアセンブリの例

リニアアセンブラ

図 1 (a) は Texas Instrumental 社製の VLIW 型 DSP
TMS320C62x [3] のアセンブリの例である. コード中の||はその行の命令を直前の命令と並列に実行する指示であるが, ユー
ザは命令レベルの並列化を陽に指定しなければならない. 6 行目の NOP は 4, 5 行目のロード命令の完了を待つためのものであるが, ユーザは各命令のパイプライン構成を熟知している必要がある. ニーモニックの後の.S1 などは使用する演算器を,オペランドの A2, B6 などはそれぞれクラスタ A, クラスタ Bのレジスタを指定するものであり, 命令のクラスタへの割り当てや演算器の選択もユーザが行わなければならない.
このアセンブリに対応するリニアアセンブリが図 1 (b) である. リニアアセンブリは命令が逐次実行されるセマンティクスであるため, ||や NOP を指定する必要は無い. また, 命令を実行する演算器やクラスタの指定も不要であり, オペランドのレジスタは変数を用いて記述できる.
リニアアセンブラは, リニアアセンブリを入力として, 命令ス
ケジューリングや演算器/レジスタの割り当て, スピル/リロー
ド命令の追加などを行い図 1 (a) のようなアセンブリを出力する. 単体で使用する以外にコンパイラのバックエンドとしての使用も考えられる.

3

今井 正治 ‡Masaharu Imai

リターゲッタブル・リニアアセンブラ

リターゲッタブル・リニアアセンブラは図 2 のようにリニアアセンブリとターゲットアーキテクチャの記述を入力とし, 最適化されたアセンブリを出力する. すなわち, アーキテクチャ

図 2: リターゲッタブル・リニアアセンブラの構成記述を用意すれば, そのプロセッサ用のリニアアセンブラが得られることになる.

3.1

アーキテクチャ記述

リターゲッタブル・リニアアセンブラのアーキテクチャ記述は, ターゲットとなるプロセッサの様々な情報を記述するものである. 本稿で対象とするアーキテクチャのモデルは大阪大学で開発された ASIP Meister [2] のものであり, TMS320C62xや富士通の FR400 シリーズ [4] PHILLIPS 社の TriMedia [5]などの VLIW 型プロセッサのアーキテクチャを包含する. このアーキテクチャ記述はリソースの情報, ディスパッチ用情報,命令パターン, データ転送表の情報から成る.

1. リソース情報
プロセッサが持つレジスタやレジスタファイル情報を記述する. レジスタであればレジスタ名や所属するレジスタファイル, データ幅の情報を持つ.

2. ディスパッチ用情報
アーキテクチャが持つスロット数や, スロットに割り振ることのできる命令の集合, 1 サイクルで同時に実行できる命令の組などを記述する (整数計算を行う命令同士は同時に実行できるが, 分岐命令と他の命令を並列に実行はでき† 関西学院大学, Kwansei Gakuin University‡ 大阪大学, Osaka Universityないなど).

3. 命令パターン情報
命令パターンは, プロセッサが実行可能な命令をモデル化したもので, 各命令が各パイプラインステージで使用する資源, それぞれのオペランドが read であるか write であるかを記述する. またフォワーディングが実装されている
場合にはフォワーディングの情報も記述する.

4. データ転送表
レジスタからレジスタ, レジスタからメモリ, メモリからレジスタへの転送を行う際に使用する命令パターンと, そのオペランドの指定法を記述する. 例えば, レジスタファイル A からレジスタファイル B への転送には ADD .L1

図 3: 命令スケジューリングの例

src, 0, dst を用いるという情報を記述する.

データ転送を行う命令を挿入して, 命令パターンを割り当コード生成の方式

44.1

てられるようにする必要がある. また, レジスタの数が足処理の流れりない場合はスピルコードを追加し対処する. これら追加

リターゲッタブル・リニアアセンブラの処理の流れを図 2 にする命令はアーキテクチャ記述中のデータ転送表から選示す. リニアアセンブリ入力に対して前処理系が構文解析を行い, スケジューラが扱う中間表現に変換する. リニアアセンブ

択し, 他の命令と共にスケジューリングする.

レジスタペアの扱い

リを分岐命令やラベルの位置で分割し, ベーシックブロック分4.3割を行う. このベーシックブロックごとにスケジューラがコードの最適化を行う.

を扱うレジスタペアを持つものがある. プロセッサによってア

4.2

スケジューラスケジューラは前処理系が出力する中間表現中の各命令に対して, 実行にかかるサイクル数がなるべく少なくなるように,命令の開始サイクルと命令パターンを決定する. 各命令のオペランドにレジスタを割り当てるが, 必要がある場合はスピル/リロードなどの転送命令の追加を行う.

1. 命令パターン割り当てとスケジューリング

プロセッサの中には複数のレジスタを使用して一つのデータセンブリ中でのレジスタペアのシンタックスは異なり, ペアを構成するレジスタすべてを記述するものと, ペアの一部のみを記述するものが存在する. 一部のみを記述する場合, ペアを構成するオペランドがどれかを判断しにくいため, 本稿で扱うリニアアセンブリではペアを構成するオペランドすべてを記述するものとする. それぞれの変数がペアであることは命令パターンに記述し, ペアを構成できるようにレジスタ割り当てを行う.

むすび

アーキテクチャ記述からそれぞれの命令に割り当てられ5る命令パターンの候補を得て, その中から各命令を実行する命令パターンを選択する. 命令の実行サイクルは各命

本稿ではリターゲッタブル・リニアアセンブラとその構成法を提案した. 現在までに, リターゲッタブル・リニアアセン令のデータ依存関係, 資源制約を考慮して決定する. 図 3

ブラのプロトタイプを Cygwin 上で Perl5.8.7 を使用して作成に命令パターン割り当ての例を示す. 2 つの乗算に対してすでに命令パターンは割り当てられ, それぞれ 1 サイクルし, これを使用して TMS320C62x のアーキテクチャ記述とリ目から実行されているとする. この 2 つの命令は依存関係がなく, また命令パターンが同じ資源を使用していないので並列に実行できる. 次の加算に対して割り当てる命令パターンの候補として ADD1 と ADD2 があるとする.
ADD2 を割り当てた場合, 前の 2 つの命令と依存関係があるため 5 サイクル目から実行することになる. ADD1を割り当てた場合, 前の命令がそれぞれフォワーディングユニットである FWU0, FWU1 にフォワーディングしたデータを受け取ることができるため命令間依存距離が縮まり, 3 サイクル目に実行することができる.

ニアアセンブリからスケジューリングされたコードを出力することができている. 今後, FR400, TriMedia など他のアーキテクチャをターゲットとすることを目標に, これらのターゲットに合わせてスケジューラが行う処理を決定し, 改良を行って行く予定である. また, 出力するコードの質の向上のために, 最適化機能を強化したスケジューラを開発していくことも課題である.

参考文献

振られる場合が生じる. TMS320C62x の「クロスパス」[1] R. Leupers and P. Marwedel: Retargetable Compiler
Technology for Embedded Systems, Kluwer AcademicPublishers (2001).
[2] 武内，小林，今井: “特定用途向きインストラクションセッ
トプロセッサ開発環境 ASIP Meister と DSP アプリケーションへの応用,” 信学技報, CAS2002-61 (Sept. 2002).
[3] http://www.ti.com/.
[4] http://jp.fujitsu.com/.のように専用のパスを使用してそれぞれのクラスタにア[5] http://www.nxp.com/.

2. データ転送命令の追加
クラスタ化されたプロセッサの場合, ある変数に対してそれを定義する命令と使用する命令が別々のクラスタに割りクセスできる命令パターンが存在すれば, その命令パターンを割り当てればよいが, そうでない場合はレジスタ間の