専用プロセッサ用命令セットの自動生成手法の提案と実装
全文
(2) na. nb. nc C. B. A +. ne. D. E +. *. n2. n1. nd. n3. + n4. C Program. Application Specific Hardware. i)software. bottlenecks ii)with Application Specific Hardware. Small Processor. Additional Hardware. 図3. na. nb. Data Flow Graph の例 (1). na. nb. nc. +. n2 n1 * n2. n1. n1. n4. m2(add3) nc. n2. nd. nb nc. na. *. +. n2. n1 m5(mul). +. +. n4. m1(add). n2. n4. + 図 1 ソフトウェアとハード ウェアの切り分け. nd n1. + iii)with Small Processor+Additional Hardware. Y ny. X nx. m4(add). m3(mac) nd ne. nd. +. *. nb nd. na. n3. +. ne. +. n1. n3. + n4 m6(macadd) 図4. m7(add). m8(para-add). 例 (1) に対して生成されたマッチ. ネック部分を解析することにより、追加すべき命令を探り、コア Behavior Description. 命令と追加命令を合わせた専用命令セットを生成する。 コンパ イラはこの専用命令セットを利用してコード を生成する。ボト ルネックごとに専用ハード ウェアを用意するよりも簡単で、ボ トルネックごとのハード ウェア資源の共有が可能であり、コー. Instruction Set Generation. ド 変更で済むレベルならば仕様変更にも対応が可能になる、と いうメリットがある。当然、追加命令がないコア命令のみで処 理するよりも高速であることが期待できる。. Code Generation. Instruction Set. 3. 問題定義および定式化 ターゲットアプリケーションのボトルネック部分は Data Flow. Graph(図 3) で表現されているとし、これを最小コストでカバー する専用命令セットを生成する。 Code(Software). Additional Hardware. 3. 1 命令モデル 専用命令は 、DFG 上の一つもしくは複数の演算ノード から 成るものとし 、マッチとして、DFG 上のノード の組み合わせ. Core Processor 図 2 開発フローと本研究の位置づけ. (図 4) を考える。専用命令セットは選択されたマッチから構成 され、専用命令セット生成は、DFG 全体を最小コストでカバー するマッチを選択することとして定式化される。 マッチは、プライマリ・インプットとプライマリ・アウトプッ トを持ち、専用命令として選択するためには以下に示す制約条 件がある。 それぞれのマッチ mi について、マッチが専用命令として選. −50−. —2—.
(3) ばれたときに 1 となり、そうでないときには 0 となるような. ある。. ブ ール変数 mi (マッチ変数と呼ぶ) を導入する。同様に 、そ. これら二つのコストのトレード オフは. れぞれの DFG ノード nk について 、ノード がいずれかのマッ. Ctotal = v · Cstep + w · Carea. チによりプライマリ・アウトプットとしてカバーされたときに. 1 となり、そうでないときには 0 となるようなブール変数 nk. と表される。ここで 、 v, w はそれぞれステップ数コストと面. (ノード 変数と呼ぶ) を導入する。ここでは 、マッチの名前や. 積コストの重みである。. DFG ノード の名前と、対応するブール変数の名前とを特に区. 4. アルゴリズム. 別しない。 ノード nk は ノード nk をプライマリ・アウトプットとして 持つマッチが選択されていればカバーされる。よって、. ターゲットの Data Flow Graph が図 5 のように与えられて いるとする。ノード をカバーするマッチを列挙する (図 6)。こ. nk = ma + mb + mc ... となる。ここで ma , mb , mc , ... は 、. こでは、簡単な例として、隣接する 2 つのノード をカバーする. ノード nk をプライマリ・アウトプットとしてカバーするマッ. ものに限定した。これらのマッチの中から、プライマリ・アウ. チの集合である。. トプット n8 , n9 を共に 1 にする組み合わせを求める。ただし 、. マッチが有効な命令となるためには、マッチのプライマリ・イ. プライマリ・インプット n1 , n2 , n3 = 1 である。. n8 は n6 の出力, n9 は n7 の出力なので. ンプットのノードがすべてカバーされている必要がある。これ は、np ∗ nq ∗ nr ∗ ... = 1 として表される。ここで、 np , nq , nr ... はマッチのプライマリ・インプットである。. n6 ∗ n7 = 1. 図 4 において、マッチ m2 では na 、 nb 、 n2 がプライマ リ・インプットであり、 n4 がプライマリ・アウトプットであ. n6 を出力とするマッチは m1 , m2 , m3 であり、一方 n7 を出. る。DFG ノード n4 はマッチ m2 、m3 、m4 、m6 のいずれか. 力とするマッチは m4 , m5 である。m1 を選ぶためには入力. 一つ以上が選択されたときにカバーされる。. n4 , n5 = 1 が必要、と m1 , m2 , m3 , m4 , m5 について条件を考. 最初 DFG のすべての入力ノード (図 3 の na , nb ...ne ) はカ. 慮していくと. バーされているとして、最終的に DFG のすべての出力ノード. (図 3 の nx , ny ) がカバーされるように、適切なマッチを選択し. (m1 ∗ (n4 ∗ n5 ) + m2 ∗ (n1 ∗ n2 ∗ n5 ) + m3 ∗ (n2 ∗ n3 ∗ n4 )). ていく。. (m4 ∗ (n3 ∗ n5 ) + m5 ∗ (n2 ∗ n3 )) = 1. 専用命令としては、以下の 3 つの種類のものを考える。. • 単一演算命令 (通常の命令。図 4 の m1 , m4 , m5 , m7 ) • 依存性がある複数の演算を処理する直列命令 (MAC 命 令など 。m2 , m3 , m6 ). となる。さらに n4 , n5 についてマッチの制約条件を導き、プラ イマリ・インプット n1 , n2 , n3 = 1 を考慮すると、. (m1 ∗ m6 ∗ m7 + m2 ∗ m7 + m3 ∗ m6 ). • 独立した複数の演算を処理する並列命令 (SIMD 命令な ど 。m8 ). (m4 ∗ m7 + m5 ) = 1. 命令を極端に専用化すると、再利用性を損ない、その結果と してコストの増大を招くため、実用的には、マッチは 1 から 4. となる。よって. 程度の演算ノードから構成する。. m1 ∗ m4 ∗ m6 ∗ m7 + m2 ∗ m4 ∗ m7 + m3 ∗ m4 ∗ m6 ∗ m7. 3. 2 コスト モデル. +m1 ∗ m5 ∗ m6 ∗ m7 + m2 ∗ m5 ∗ m7 + m3 ∗ m5 ∗ m6 = 1. 専用命令の選択においては、以下のコスト関数を用いる。全 体のステップ数は、. Cstep =. . となる。これらの積項ひとつひとつが 、制約条件を満たすマッ チの組み合わせである (図 7)。. Cs,i · mi. 一般には、これらの制約条件を BDD の形式で表現し 、同時. と表される。ここで 、 Cs,i は mi が必要とするステップ数で. に Multi Terminal Binary Decision Diagram を用いて評価関 数を記述すると、制約を満たす最適な解を求めることができる。. ある。. 制約条件を満たすものについてはコストはそのまま、制約条件. 全体のチップ面積は、. Carea =. . を満たさないものはコストが∞になるように構築した MTBDD. Ca,p · opp. から、コストが一定以下のものを含む BDD を生成する。この. と表される。ここで、Ca,p は演算 opp が必要とするチップ面積 である。ブール変数 opp は演算 opp が用いられたときに 1 とな り、そうでないときに 0 となる。opp は opp = mi + mj + mk ... と表される。ここで、マッチ mi , mj , mk ... は同じ演算 opp を 用いるとする。図 4 においては 、opadd = m1 + m4 + m7 で. 「一定以下」の基準は MTBDD の最小値 (最適解のコスト ) を 用いて決定する。 具体的には、コスト MTBDD に findMin をかけて最適解の コスト min を取り出し 、bddInterval によりコストが min と. min + の間にあるものだけが 1 となるような BDD を生成す る。この BDD に PickOneCube をかけて各マッチ変数の値を. −51−. —3—.
(4) n1 a. n4. n2 b. *. n3 c. +. +. Memory Read/Write +. Addition. *. Multiplication. n5. +. n6. d n8. n7. Primary Outputs: n8,n9. e n9. 図5. Primary Inputs: n1,n2,n3. d=(a*b)+(b+c) e=(b+c)+c. n1 a. Data Flow Graph の例 (2). n2 b. *. n4. +. n3 c. n1 a. n5. n4. n2 b. n3 c. *. +. n5. 取り出し 、1 になっているものを選択されたマッチとして解釈 +. する。 これは網羅的なアプローチであり、列挙したマッチの範囲内. +. n6. m1 d n8. での最適性が保証される。. +. n7. m2. e. d n8. n9. 本研究では 、汎用 BDD パッケージである CUDD [1] を用 n1 a. いた。. 5. 実 験 結 果 5. 1 例. n2 b. n4. *. +. 題. +. こ こ で は 、Advanced Encryption Standard とし て 採 用 さ れ た 暗 号 化 ア ルゴ リ ズ ム Rijndael [2] を 例 題 と し て 利. 分の処理の高速化をする。ACE 社の CoSy を用いて関数に含. n1 a. n5. n4. d n8. 用し た 。Rijndael で 特に 使 用 頻 度が 高い 関 数は KeyAddi-. tion,MixColumn,ShiftRow,ByteSubstitution であり、この部. n3 c. n1 a. n3 c. +. n5. +. n6. d n8. e n9. n2 b. n9. *. n7. n3 c. n1 a. n5. n4. n7 e. n2 b. +. +. n6. m3. +. n6. n7 m4 e n9. n2 b. n3 c. まれる BasicBlock をデータフローグラフ (CDFG) としてダン プし 、各 BasicBlock(一つあたりの演算ノード 数は 10-30 程度). n4. *. を独立に専用命令セット生成ツールにかけた。なるべく多くの. +. +. BasicBlock をまとめて処理する方がよりよい結果を得られる はずであるが 、単純に 、一つの大きな MTBDD を作ってしま うと、BDD が爆発するため、計算が完了しないという問題が ある。. +. n6. d n8 n2 b. n1 a. n7. m6. *. +. +. m5. e n9. d n8. n6. n5. +. n7 e n9. n3 c. 5. 2 命令セット 生成 生成された命令セットに含まれる命令の数を表 2 に示す。ま た、生成された命令の一部を、図 8 に示す。. n4. *. +. +. • 直列命令のみを考慮 • マッチに含まれる演算ノード 数は 3 まで. d n8. • 全体のステップ数を最適化 (面積は考慮しない). n6. n5. m7. +. n7 e n9. 図 6 例 (2) に対するマッチの生成 (隣接する 2 ノード までに限定). • 各マッチのコストはすべて 1 という条件で計算を行った。 なお、複数の箇所に現れる同一の命令は一つの命令として数 えるため、表の数字は単純な算術的加算の合計ではなく、集合 的な加算をした合計である。. 5. 3 コード 生成 Code Generation Finite State Machine [3] ベースの Code Generator による最適コード 生成を行った結果のステップ数を 表 3 に示す。表中、sw はソフトウェアのみ (MIPS R1000 を想 定) 、our は専用命令セットを使用したプロセッサ、vliw は専用. −52−. —4—.
(5) n1 a. n2 b. *. +. n3 c. n1 a. + n5. n4. +. n6. d n8 i)m1,m4,m6,m7 n1 a. n2 b. n4. *. n2 b. n3 c. *. + n5. +. n7 e. +. n6. n7. d e n8 n9 ii)m2,m4,m7. n9. n3 c. n1 a. + n5. n4. n2 b. n3 c. + n5. *. 表2. Function +. +. n6. +. n7. d e n8 n9 iii)m3,m4,m6,m7 n1 a. n2 b. n4. +. n3 c. n6. n1 a. n4. +. d n8 v)m2,m5,m7. Matches. n7. KeyAddition. d e n8 n9 iv)m1,m5,m6,m7. + n5. *. +. n6. n7. m6. n2 b. +. +. n6. d n8 vi)m3,m5,m6. n9. MixColumn. + n5. m5. e. n3 c. *. n7. ShiftRow. e n9. 図 7 例 (2) に対する制約条件を満たすマッチの組み合わせ. Substitution. total. r1. *. r2. r4. 10. 3. 28. 5. bb3. 9. 2. total. -. 8. bb10bb11. 69. 9. bb13. 39. 6. bb1bb2. 81. 9. bb4bb5. 70. 9. bb7bb8. 84. 8. total. -. 19. bb1. 19. 3. bb2. 28. 5. bb3. 7. 2. bb4. 18. 4. bb5. 9. 2. total. -. 8. bb1. 7. 2. bb2. 24. 4. bb3. 9. 2. total. -. 6. -. -. 29. r2. LOAD. LOAD. ConstADD. bb1 bb2. +. +. ADD#const r2,r1. in the solution. Const.. r1. +. r1. +. r3. r2. Const.. Rijndael 用に生成された命令数. BasicBlock # of Generated # of instructions. r3 LOAD r3,[r1*#const+r2]. LOAD r4,[r1+r2+r3] Triple indexed Load. Scaled double indexed Load. 図 8 生成された命令の例 (一部). −53− —5—.
(6) 文. 表 3 コード 生成結果 (ステップ数). non-loop unrolling. loop unrolling. function. sw. our. vliw. AddRoundKey. 79. 60. 64. 48. 20. ByteSub. 76. 44. 64. 50. 20. 32. ShiftRow. 135 100. 120. 87. 20. 36. MixColumn. 158. 96. 155. 72. 96. total. 448 276. 344. 340. 132. 192. 72. swu ouru vliwu 28. 命令を含まない Very Long Instruction Word アーキテクチャの プロセッサをそれぞれターゲットとしている。swu,ouru,vliwu はそれぞれループ展開を施した場合である。ただしリソース制 約は考慮していない。ステップ 数を比較すると 、sw だけの場 合に比べ、vliw が 1.3 倍高速であるのに対し 、our は 1.6 倍高. 献. [1] Fabio Somenzi, ”CUDD: CU Decision Diagram Package Release 2.3.1”, http://vlsi.colorado.edu/ fabio/CUDD/cuddIntro.html [2] J. Daemen, V. Rijmen: AES Proposal: Rijndael, Document Version 2, Sep. 1999. [3] K. Seto, T. Kuroha, D. Nakatani, K. Asada, M. Fujita: Co-Design of Custom VLIW-DSP Type Data-path Architecture and its Parallel Program for Loops based on Formal Verification Technique, 5th Int. Workshop on Software and Compilers for Embedded Systems, Mar. 2001. [4] S. Liao, S. Devadas, K. Keutzer, S. Tjiang, A. Wang: Instruction selection using binate covering for code size optimization, Proc. Int’l Conf. on Computer-Aided Design, pp.393–399, 1995. Guido Costa Souza de Araujo ,”Code Generation Algorithms for Digital Signal Processors”, PhD Dissertation, Princeton University, Princeton, NJ, June 1997.. 速となっている。さらに、ループ展開を施した場合は、swu だ けの場合に比べ、vliwu が 1.8 倍高速であるのに対し 、ouru は. 2.6 倍高速になり、改善の結果はさらに顕著になる。. 6. 結論と今後の課題 提案した手法により自動生成した専用命令セットが 、特定用 途のアプリケーション実装の高速化において有利であることを 示した。以下に、今後の課題を示す。. 6. 1 ヒューリスティックによる改善 DFG ノード 数が増大すると 、マッチ変数の数も増大する。 また、マッチに含むノード 数を増やす、直列命令のみならず並 列命令を許す等、マッチに持たせる自由度を上げると、やはり マッチ変数の数が増大する。生成するマッチの数を増やすこと で探索空間が増大し 、よりよい解が得られる可能性があるが 、 一方で 、MTBDD が爆発して計算できなくなるという問題が ある。 直列命令のみ、マッチあたりノード 3 つまで、という条件で 扱える DFG ノード 数は 30 程度であり、関数全体をそのまま 処理することはできないものの、小さな BasicBlock を扱うこ とは可能である。. DAG カバリングは NP-hard であり、網羅的なアプローチに は限界があるため、より大きな範囲で最適化をかけるためには、 明らかに不利に見える解は計算途中で捨てていく等のヒューリ スティックが必要となる。. 6. 2 コード 生成 今回の実験では、専用命令セット生成は単純にマッチングパ ターンを生成するためだけに用いて 、コード 生成は CGFSM に任せたが 、実は、解を求めた時点で DAG カバリングが完了 していることを利用すれば 、追加的にスケジューリング・アロ ケーションを行うことで、比較的簡単にコード 生成が行えるは ずである。. 7. 謝. 辞. 実験をするにあたり、東大・南谷研の斎藤氏には、Rijndael の プロファイリングで、Pacific Design Inc. の瀬戸氏には、DFG の抽出、CGFSM によるコード 生成で大変お世話になった。こ の場を借りて御礼申し上げる。. −54−. —6—.
(7)
図
関連したドキュメント
In [3] the authors review some results concerning the existence, uniqueness and regularity of reproductive and time periodic solutions of the Navier-Stokes equations and some
We obtain some conditions under which the positive solution for semidiscretizations of the semilinear equation u t u xx − ax, tfu, 0 < x < 1, t ∈ 0, T, with boundary conditions
Thus, Fujita’s result says that there are no global, nontrivial solutions of (1.3) whenever the blow up rate for y(t) is not smaller than the decay rate for w(x, t) while there are
The benefits of nonlinear multigrid used in combination with the new accelerator are illustrated by difficult nonlinear elliptic scalar problems, such as the Bratu problem, and
For the lighting and air conditioning equipment, which account for more than half of the building’s energy consumption, energy efficient systems have been adopted, such as a
Building on the achievements of the Tokyo Climate Change Strategy so far, the Tokyo Metropolitan Government (TMG) is working with a variety of stakeholders in
: Associations betwwen spectral repre sentation of the surface electromyo gram and fibre type distribution and size in human masseter muscle.. : Motor unit activity and
以上の各テーマ、取組は相互に関連しており独立したものではない。東京 2020 大会の持続可能性に配慮し