鳥は卵の中からぬけ出ようと戦う。 卵は世界だ。 生まれようと欲するものは、 一つの世界を破壊しなければならない。
#安定版の提供
現時点の安定版は 0.3.2 だ。このバージョンではまだパイプライン化や for 文のunroll に対応していない。次のバージョン 0.3.3(Adagio) は近いうちに安定版として提供可能だろう。すでに紹介しているが次の機能が使える。
- import
- パイプライン化
- for 文の unroll
#次期バージョン
次のバージョン(0.3.4 Blue-notes) での大きな機能アップは II=2 時のパイプラインの実装の予定だ。場合によっては Tuple による同時性の記述が出来るようになるかもしれない。
- II=2 以上のパイプライン 実装
- Tuple による同時性記述 検討(実装)
- bit ライブラリ(検討)
- Python のインライン関数列挙(検討)
II=2 のパイプラインの実装をする際にはリソース分散による FMAX の向上を目指す。パイプライン化ではある処理をスケジューリング的に早く実行できるからと言って偏りがある状態にしてしまうと、結果として特定のステージに処理が集中してしまいその処理にすべての処理が引きずられてしまう。そこをうまく分散させてFMAX を向上させる。
時間の記述は、本来、Polyphony でサポートするものではないが、同時性だけは Tuple により自然にでき、かつ、便利な機能なので検討したいと思う。
bit ライブラリは RTL と Python との間の橋渡し的なライブラリになるだろう。抽象的な事が書けても、実際の RTL と親和性が無ければ高位合成としての立ち位置はただのシミューレション的なものになってしまう。
#次次期バージョン(Coda)
将来的にどのような機能を入れていけばよいか検討中である。
- 関数オブジェクト対応
- 柔軟なリソース対応
- 柔軟な配列(setitem/getitem)
関数オブジェクトはすでに内部的には実現しているのでそう難しくはないだろう。class のコンストラクタに class を渡せるようにするとライブラリとして柔軟性が増す。
リソースを柔軟に扱えるようにすると、より拡張性があがる。その為には内部的にリソースを柔軟に表現できる記述方法が必要になるかもしれない。掛算器の仮実装というのが最初のターゲットになる。
配列による表現がユーザに開放されるとキャッシュシステムを書く場合など便利に書けるようになるだろう。
#2018 年の Polyphony
Polyphony は実用的なアプリケーションを気軽に書けるところにまで成長した。今後は、コンパイラ自身の機能アップというより、何が書けるのか?にフォーカスしていく事になるだろう。