Introduction

SMYLEvideo GEN.2 プロセッサとVPPL言語

SMYLEvideo GEN.2 メニーコア・プロセッサは、ごく一般的なプロセッサと異なる特徴を持っています。

  • 複数のコア間をZOMPと呼ばれる技術による通信チャネルで結合しコア間通信のオーバヘッドを極小化していること
  • それを最大に生かすために、データフロー型プロセスネットワークモデルによりアプリケーションを構築すること
  • キャッシュを持たない代わりに大規模なレジスタファイルと命令をブロックしないメモリアクセス命令を持つこと
  • 1命令のオペレーション数の非常に多いSIMD型命令によりデータ並列性を活用するように設計されていること

このような特徴をそのまま生かし、SMYLEvideo GEN.2上にアプリケーション・プログラムを構築するためにVPPL言語が開発されました。 VPPL言語は、以下のような特徴を持ちます。

  • 複数のコアが同時に別々のプログラム(プロセス)を実行する状態が記述できる
  • ZOMPを使ったコア間通信を簡単に記述できる。
  • SIMD型のオペレーションを活用するためにベクトル型を持ち、ループを使わずにベクトル演算が可能。
  • SMYLEvideo GEN.2特有の、レジスタ、メモリ階層を活用できる
  • 見かけはクラシックな Pascal風の文法

VPPLコンパイラ

VPPLコンパイラは、VPPL言語ソースプログラムをSMYLEvideo GEN.2プロセッサ用のアセンブリ言語プログラムに変換するコンパイラです。 オプションスイッチにより、ISIM、RTL、FPGAの各実行環境に対する実行オブジェクトを生成することができます。 また、VPPLコンパイラは、ISIM(命令セットシミュレータ)上での実行をサポートしており、コンパイルしたオブエジェクトを ISIMに実行させ、結果を画面表示させるISIMドライバ機能も内蔵しています。さらに、Xilinx社 Virtex7-V2000T FPGAに書き込むための SMYLEvideo GEN.2ビットファイル内のメモリ定義に対して作成したオブジェクトプログラムを書き込む機能ももっています。 この機能により、作成したプログラムをマイクロSDカードに書き込み、即座にFPGAにロードして実行させることも可能となっています。 VPPLコンパイラは、マイクロソフト社の C# 言語で作成されており、一般的なWindows環境上で実行することができます。 コマンドラインから単独のプログラムとして利用することができる他、CoolSoft製のCPSDE GUI環境から呼び出して使用することも可能です。

v01r18

  • FIFOstatus関数群の追加。ノンブロッキングFIFO待ちに対応。
  • Semaphore関数群(非推奨)の追加

v01r17

  • DNN向け演算子機能の拡充

v01r16

  • DNN向けドット演算子をサポート
  • BLASlikeドット演算子をサポート
  • リダクション系ドット演算子をサポート
  • 指数関数、平方根など固定小数点型演算関数を追加

v01r11

  • アセンブラとして gas をサポート
  • 外部の浮動小数点データファイルを固定小数点化してとりこむ初期化関数をサポート
  • 上記にともない、固定小数点数の表示機能を追加
  • インラインアセンブラのサポート

v01r08

  • オプティマイザの追加
  • 16Q8形式浮動小数点数のサポート
  • スコープ演算子の追加
  • コンパイラ変換関数の追加
  • 組み込み関数の追加

v01r05

  • アセンブラドライバの組み込み
  • ISIMドライバの組み込み
  • FPGA用オブジェクト(BITファイル)生成ドライバの組み込み
  • オプション設定の初期値ファイルのサポート
  • CPSDEへの組み込み対応

TODO

  • SHIM.XMLからのパラメータ抽出のサポート
  • 外部C++プログラムから Agent としての呼び出し