ACデータタイプ v3.7

Algorithmic C(AC)データタイプには数値データタイプのセットに加えて、通信プロセスのチャネルをC++でモデル化するためのインタフェースデータタイプが含まれます。数値データタイプを用いることで、ランタイムのオーバーヘッドを最小限に抑えてスタティックビット精度を簡単にモデル化できるようになります。このデータタイプには、ビット精度の整数型、固定小数点型、浮動小数点型、コンプレクス型が含まれます。数値データタイプは、ビット精度のアルゴリズムを記述する基盤を提供してハードウェアに合成できるようにすることを目的として開発されました。Catapult High-Level Synthesis(HLS)は、ACデータタイプを使用しており、シーケンシャルな標準規格ANSI C/C++仕様として記述されたアルゴリズムから最適化されたRTLを生成します。

整数型と固定小数点型ではどちらも演算子とメソッドが明確に一貫して定義されており、シミュレーションおよび合成セマンティクスの定義も明確です。これにより、アルゴリズム設計者、システム設計者、ハードウェア設計者はビット精度の動作をC++仕様で正確にモデル化できるようになるとともに、ビット精度の整数と固定小数点のほかのデータタイプと比べて、シミュレーション速度を10倍から200倍高速化できます。ビット精度のコンプレクス型と浮動小数点型は、SystemCなど別のデータタイプパッケージでは提供されないという点で特殊です。ビット精度のコンプレクス型は、ビット精度の整数型と固定小数点型に基づいて、異なるコンプレクス型の演算対象を加法演算または乗法演算することができ、必要なデータタイプを返すため、非常に重要です。結果の精度は一切欠けることなく表現されます。

既存の整数型および固定小数点型のデータタイプと比較したAlgorithmic C(AC)データタイプの利点

  • 任意のビット長: 実装を制限しない明確なセマンティクス定義をすべての演算子に対して可能にします。また、人為的な(定量化とドキュメント化の難しいことが多い)精度制限のない、一般的なIPアルゴリズムを記述することも重要です。例えばCatapultでは、任意のビット長のデータタイプに対して、除算や平方根といった汎用演算機能を提供しています。
  • 正確で一貫したセマンティクス定義: 特に重視したことは、シミュレーションセマンティクスの定義と検証、そしてそのセマンティクスが合成に適しているかを確認することでした。どのシミュレーション動作もコンパイラに依存しません。また、シミュレーション中に無効なコードを発見するアサーションを導入しました。データタイプが異なってもセマンティクスの一貫性は維持されます。また、演算子の戻り値型の精度が損なわれることもありません。
  • 正当性: シミュレーションと等価性チェックの組合せを使って、シミュレーションセマンティクスと合成セマンティクスはさまざまなサイズの組合せに対して検証がされています。
  • シミュレーション速度: ac_intの実装は、正規のC++コンパイラで最適なアセンブリ言語を生成できるように、高度なテンプレートスペシャライゼーション技術を使用しており、同等のSystemCデータタイプに比べてずっと高速な実行を可能にします。例えばビット幅が1~32までのac_intは、これと同等のsc_bigint/sc_biguintデータタイプに比べて100倍も実行速度を誇ります。これと同等のsc_int/sc_uintデータタイプと比較しても3倍高速です。
  • コンパイル速度と小型実行ファイル: ac_intデータタイプを使って記述したコードのコンパイルは、コンパイラ最適化機能(高速シミュレーション実行に必須)を有効にした場合であっても、5倍の高速化を実現します。また、より小型化したバイナリ実行ファイルを生成します。

含まれるもの

圧縮されたフォルダには、参照マニュアル、リリースノート、ヘッダファイル、gdbデバッガでACデータタイプをきれいに印刷するPythonスクリプトが含まれます。

  • ac_channel.h - ブロック間のストリーミング通信をC++でモデル化するためのヘッダファイル
  • ac_complex.h – コンプレクス(実数、虚数)データタイプのヘッダファイル
  • ac_fixed.h - ビット精度の固定小数点型のヘッダファイル
  • ac_float.h - ビット精度の浮動小数点型のヘッダファイル。仮数部はac_fixed(2の補数)で、指数部はac_intです。
  • ac_int.h - ビット精度の整数型のヘッダファイル。別のユーティリティ機能も提供し、任意のビット長の演算を実行するための基底クラスを含みます。
  • ac_sc.h - SystemCデータタイプから、またはSystemCデータタイプへの変換機能に加え、SystemCでACデータタイプを使用するためのトレース機能を含むヘッダファイル
  • ac_pp.py - gdbデバッガでACデータタイプをきれいに印刷するPythonスクリプト
  • 参照マニュアル - Algorithmic C(AC)データタイプの概要
  • リリースノート - Algorithmic C(AC)データタイプのリリースノート。ソフトウェアバージョン3.7
製品情報リクエスト