CoSyコンパイラ開発システム

主な機能

CoSyの製品としての特徴

徹底的なジェネレータの使用

CoSy

モジュール構造

  • コンパイラ開発者の知識をモジュール化
  • 独立したモジュール開発
  • 部品の再利用

その利点

  • Time to marketの短縮
  • 開発費・保守費の低減

-Code Generator

CoSyにはBegと呼ばれるCode Generatorを生成するツールが含まれています。
BegはCGD(Code Generator Description)ファイルを基にCode Generatorを生成していきます。
CGDファイルはコンパイラ開発者によって作成され、ターゲットアーキテクチャの情報、例えばレジスタやプロセッサの構成、また各命令のパターンマッチングの定義、更には各命令のスケジューリングを行うための情報が含まれています。

-Scheduler

  • レジスタの依存関係、命令間のレイテンシーを考慮に入れた命令のスケジューリングを行うことが可能です。
  • プロセッサユニットの複数化にすばやく対応でき、命令のパラレル化も可能です。
  • 特別な処理をを固有の命令としてスケジューリングに加えることができます。

豊富な分析と最適化のengine

Constant folding
定数の畳み込みともいわれ、定数計算をコンパイル時に実行してしまう最適化アルゴリズム
Algebraic simplification
計算後の値が同じ計算を削除する最適化アルゴリズム
Copy/constant propagation
同じ箇所を同じもので置き換える最適化アルゴリズム
Strength reduction
よりコストの低い方法で計算を置き換える最適化アルゴリズム
Dead code elimination
実行されることのない命令を削除する最適化アルゴリズム
Common subexpression elimination
異なる形でものでも同じ値を持つ式を何回も計算せずに済むようにする為、同じ値を持つ式を置き換える最適化アルゴリズム
Function inlining, intrinsics
関数を展開し、関数呼び出しのオーバーヘッドを無くすアルゴリズム
Software pipelining
ループ内の処理を重ね合わせ並列度を上げる技術
Loop unrolling, fusion, etc.
Loop unrolling:ループ内部を展開する最適化アルゴリズム
Loop fusion:複数のループを一つのループに変換する最適化アルゴリズム
Loop invariant code motion
ループ内部で不変な式を移動する最適化アルゴリズム
Tail recursion elimination
再起呼び出しをジャンプ命令に変換する最適化アルゴリズム
Leaf procedure optimization
leaf procedureを識別し、スタックの割り当てを省く最適化アルゴリズム