浮動小数点を取り扱うDSP(Digital Signal Processing:デジタル信号処理)アプリケーションにも、FPGAを積極的に活用できるようになった。設計ツールとライブラリの整備が進み、FPGAのハードウェアリソースを効率的に使えるようになったためである。本稿ではFPGAによるDSPソリューションとして、浮動小数点に焦点を当て、浮動小数点DSPの概要やその課題などを説明する。

用途が拡大する浮動小数点演算

 浮動小数点演算を必要とするDSPのアプリケーションが広がっている。しかも、こうした分野では浮動小数点FFTなどのDSPアルゴリズムが求められている。例えば、軍用機器では時空間適応レーダー、ワイヤレスシステムならMIMO(多入力・多出力)処理を伴うLTE チャネルカード、医療画像機器ではMRI(Magnetic Resonance Imaging)やCT(Computed Tomography)の画像処理、計測器ではスペクトラム解析、などを挙げることができる。

 前回掲載した「先端FPGAにみるDSP実装の柔軟性」では、ターゲット機器およびDSPアルゴリズムごとに乗算器の精度を変えられ、FPGAリソースを効率的に使える「可変精度DSPブロック」について詳しく解説した。可変精度DSPブロックとは、アルテラの28nmFPGA製品に採用された新しいDSPアーキテクチャである。これまでは、固定小数点演算に用途が限定されることの多かったFPGAだが、この可変精度DSPブロックは、固定小数点演算のみならず、高精度な浮動小数点演算にも容易に対応できる点が画期的である。そこで、今回は浮動小数点DSPの概要について述べる。

浮動小数点とは

 デジタル信号処理では、2進数で表現される数値演算が中心となる。その数値を表現する形式として「浮動小数点」や「固定小数点」がある。小数点を特定の位置に固定している固定小数点に対して、浮動小数点は指数部の値によってその位置が浮いたように動く。このため、浮動小数点は固定小数点に比べて表現できる数値の範囲が広く、科学技術計算など高い精度が求められる演算に向いている。その分、演算処理装置には高い性能が求められることとなる。

 浮動小数点で数値を表現する方法としてはいくつかある。その1つが1985年に標準化され、現在最も広く採用されている「IEEE 754形式」と呼ばれる方式である。一例だが32ビットの場合、IEEE 754形式では図1のように表現が定義されている。左側から符号部(水色)1ビット、指数部(緑色)8ビット、仮数部(ピンク色)23ビットで表すこととなる。符号部は最上位ビット(MSB:Most Significant Bit)とも呼ばれ、「正」なら"0"、「負」なら"1"とする。指数部は8ビットの2進数で表現されるが、IEEE754形式では実際の指数値に127を加算した値(倍精度の場合は1023を加算した値)となる。仮数部は23ビット分の先頭に2進小数点を付ける。IEEE754形式では、小数点の左側は「1」となることがわかっており、その「1」は省略して表現される。このため、実際の精度は24ビットとなる。

図1:IEEE754形式による浮動小数点フォーマット(32ビットの場合)
図1:IEEE754形式による浮動小数点フォーマット(32ビットの場合)
[画像のクリックで拡大表示]

演算性能はMPU/DSPの10~100倍

 浮動小数点演算は1980年代まで、特殊用途向けの演算機能であった。このためマイクロプロセッサとは別に、浮動小数点の演算を実行するためのコンピュータや専用プロセッサ(FPU:Floating Point Number Processing Unit)が用意されていた。それが、1990年代初頭に登場した高性能マイクロプロセッサにはFPU機能が内蔵された。その後は汎用のマイクロプロセッサでも浮動小数点演算は一般的な機能としてサポートされるようになった。

 浮動小数点演算を実行するために用いられるデバイスはいくつかある。その代表的なデバイスがMPUやDSP、GPU、FPGAなどである。それぞれの最新デバイスにおける浮動小数点演算の性能などを図2に示す。

図2:主なデバイスにおける浮動小数点演算機能の比較
図2:主なデバイスにおける浮動小数点演算機能の比較
[画像のクリックで拡大表示]

各デバイスの機能や性能は一長一短あり、コストも含めたデバイスを選択することが重要である。この図から明らかになったことは、ソフトウェアプログラミング方式のMPUやDSPに比べて、最新のFPGAにFPU機能を実装した場合、演算性能が10~100倍も優れていることだ。演算性能がFPGAと同等の汎用GPUと比較すれば、消費電力は1/4以下となる。この比較表には明記されていないが、FPGAはFPU機能も含めてシステムレベルの機能をワンチップに集積できる点が、ほかのデバイスとの違いであり、大きな強みともいえる。

 ところが、従来タイプのFPGAにハードウェアで浮動小数点演算を実装しようとしても、そうたやすくはなかった。FPGAの構造自体の制約が大きかったからだ。例えば、FPGAにハードウェアでFPU機能を組み込むためには、ロジック部と乗算器が大量に必要となる。その分、FPGA内部の配線数は増加し配線長が長くなる。このため、内部の動作周波数を高めようとしても制限を受けるなどの課題を抱えていた。さらに、FPGAに浮動小数点演算を実装するためのRTLによる回路設計に、設計者は多大な労力を強いられていた。こうした理由から、「FPGAにハードウェアで浮動小数点演算を実装するのは難しい」というのがこれまでの一般的な見方であった。(*1)

(*1 高性能を求めない場合であれば、Nios® IIなどのFPGAに内蔵するマイクロプロセッサのカスタム命令機能を利用して、浮動小数点演算機能を追加実装してソフトウェア処理により実現可能。)

MATLAB/Simulinkと連携

 こうした課題を解決するために、FPGAベンダーではさまざまな取り組みを行っている。その1つとしてアルテラが提供するDSP設計ツール「DSP Builder」を利用した実装を挙げることができる。さらに28nm世代ではアルテラの可変精度DSPブロックを活用することで、FPGAのハードウェアリソースを効率的に使えるようになった。

 DSP Builderは、MathWorks社の「MATLAB/Simulink」で開発したDSPアルゴリズムを、アルテラ製の開発ソフトウェア「Quartus® II」を使ってFPGAに実装するための合成ツールである。最新のDSP Builderには、Simulinkブロックセット「アドバンスト・ブロックセット・ライブラリ」が追加された。このライブラリには、浮動小数点のソフトウェアライブラリである「math.h」と同等のハードウェアライブラリが含まれている。これによって、設計者が設定したシステムレベル・デザイン制約に適合するように、パイプライン化されたステージおよびレジスタを自動的に追加することができる。

 つまり、設計者は必要なクロック周波数、チャネル数などのデザイン制約を指定すれば、生成されたRTLはタイミング収束に向けて自動的にパイプライン化される。その上、システムレベル制約を解析し、ツール自身で時分割多重化の最適化を行うため、高いロジック使用率を実現することが可能となる。逆をいえば、設計者がシステムに必要なクロック周波数とレイテンシを指定するだけで、ツール側が自動的にネットリストの最適化を行ってくれるというわけだ。

ハードウェアリソースを最適化

 28nm FPGAでサポートした可変精度DSPブロックの内部では「フューズド・データパス・テクノロジ」と呼ぶ、浮動小数点のための回路技術が用いられている。この技術に対応していない場合は、個別の演算ブロック同士を接続し、FPU回路を構成するための配線作業を設計者自身が手作業で行わなければならなかった。フェーズド・データパス・テクノロジは、こうした作業を自動化するための技術である。可変精度DSPブロックと組み合わせることで、IEEE754の規格に準拠しつつ、ロジックや配線といったハードウェアのリソースの最適化と設計工数の大幅削減を可能とする。その一例を図3に示す。図の右側がフューズド・データパス・テクノロジを適用したケースである。

図3:フューズド・データパス・テクノロジを適用した設計例
図3:フューズド・データパス・テクノロジを適用した設計例
[画像のクリックで拡大表示]

 アルテラはDSP Builderとアドバンスト・ブロックセット・ライブラリの組み合わせによって、FPGAにおける浮動小数点DSPの実装を容易にした。その上、28nmプロセス「Stratix® V」における乗算器の搭載個数も、可変精度DSPブロックを採用したことにより、40nmプロセス「Stratix IV 」に比べてその集積度は3倍以上と格段に高まった。つまり、各DSPブロックでコンフィギュレーション可能な可変精度DSPブロックがサポートされたことにより、ハードウェアリソースをより有効に活用し、大規模で高精度なDSPを実現することを可能とした。

まとめ

 前編では、DSPと浮動小数点の概要について解説するとともに、FPGAベンダーにおける浮動小数点DSPに対する取り組みなどを紹介してきた。後編では浮動小数点DSPの設計フローとして注目されている「モデルベース設計」手法と、その手法を用いた事例を紹介する。

この記事は、アイティメディア社『FPGA Insights』に掲載されていたコンテンツを、アイティメディア/EDN Japanの許可を得て転載しています。

目次