第1章 計算基盤としてのFPGA 滝本 宗宏 はじめに • FPGAに基づくプログラム可能ハードウェア基 盤 → ソフトウェアアプリケーションの高速化 ハードウェアの見地:従来のマイクロプロセッサに 基づくソフトウェアプログラム可能システムと,ア プリケーション特注のハードウェア関数とのギャッ プの橋渡しをする ソフトウェアの見地:FPGA基盤の設計ツールや方 法論がハードウェア高速化アルゴリズムの素早 い作成を可能にする. はじめに • プログラム可能ハードウェア基盤によるよいこと 1. ソフトウェアエンジニアによる特注ハードウェア関数の 作成 2. 設計固定日時の遅延 3. 単純化したフィールド更新 4. 電気製品の多くのカテゴリから特注チップを縮小や排除 • ASIC(applica tion-specific integrated circuit)からFPGA へ • この章: 1. FPGAとFPGA基盤を概観 2. C言語を使ったFPGAアプリケーション開発における哲学 1.1 FPGAとは • FPGA(field-programmable gate array): 1. フィールド内デバイスの操作を変更化 2. プログラム可能論理ブロック(数トランジスタ)が プログラム可能な相互接続によって結合 3. 論理ブロック:検索表(lookup table, LUT) 一般的なFPGAの特徴 • 論理要素: FPGAデバイスは,小さな論理要素(論理セル)配列に 基づいて構成される. • 検索表: 論理要素はプログラム可能レジスタ(1つ以上,フリップ フロップ)と入力(5以下)を構成する論理部(検索表)からなる.検 索表は,任意の組み合わせ関数を作成できる. • メモリ資源: 最近のほとんどのFPGAがチップ上にもっている (SRAM).局所メモリ(論理要素内からアクセス可),共有メモリとい うように階層化されている. • 経路指定(ルーティング)資源: FPGAの柔軟性の素であり,プロ グラミング柔軟性と領域効率とのトレードオフが存在する.プログ ラム可能スイッチが,FPGA資源を接続する. • 構成可能I/O: FPGAに基づくアプリケーションには,さまざまなシ ステムレベルインタフェース要求があるので,FPGAは,多くのプロ グラム可能I/O特性を備えている. FPGAプログラミング技術 • FPGAプログラミング技術: 1回だけプログラミングができるものか ら(Actel , Quicklogic),消去可能なSRAMに基づくもの(Altera, Lattice Semiconductor, Xilinx)まである. • SRAMに基づく消去可能なものが主流.アップグレードは,フラッ シュメモリの更新や,WebやCD-ROMからバイナリイメージを取得 するのと同様に容易. • FPGAで実装されたアプリケーションは,ASICと比べて,遅く,電力を 消費する. • FPGAの開発は,リスクとコストを劇的に引き下げ,開発時間を短 縮させる.→ ASICのプロトタイプ • 電力消費と再構成時間の点でコストが高い再構成可能計算の将 来についても述べる. • HDLの使用や既存機能ブロックの配置によって振舞いを定義 ‐[合 成器]→ ネットリスト(バイナリ中間ファイル) ‐[配置経路設定ツー ル]→ ビットマップ(FPGAにダウンロード) 1.2 FPGAに基づくプログラム可能 ハードウェア基盤 • プログラム可能ハードウェア基盤: FPGAのようなプログラム可能ハードウェア要素を含み,ソフトウェ アアルゴリズムのすべてや一部を実装できるもの • 基盤のソフト構成要素(組込みプロセッサ,周辺機器,FPGA内で 動作する組込みOS)の定義を拡張することもできる. • 今日のFPGA: 組込みプロセッサコアと特注ハードウェア機能(図 1-1: Intellectual property, IP ブロック)をもつ標準周辺機器との組 合せは,特定のタスクや,特定のアプリケーションドメインに理想 的に適合したプログラム可能基盤を専用に作成することが可能 • プログラム可能基盤に基づく設計の試みは,元からシステム設計 者とソフトウェアアプリケーション開発者の領域 • ソフトウェアアプリケーション開発者には,設計のどの部分がハー ドウェアになり,どの部分を従来のプロセッサ上のソフトウェアとし て実装すべきか,離散デバイスとFPGA基盤内に組み込まれたプロ セッサコアのいずれを用いるか,システム設計者ほど明らかでな い. 1.2 FPGAに基づくプログラム可能 ハードウェア基盤 • ソフトウェアアプリケーション開発者にとって,ア プリケーションやアルゴリズムを全体として考慮 し,アルゴリズムの並行性を向上させ,可能な最 高の性能を発揮させるために,並列プログラミン グ手法を利用することが,ずっと根本的. • アプリケーション開発者が,設計の初期のフェー ズで行う根本的な決定,アルゴリズム分割の効 果,自動コンパイラやハードウェア合成ツールを 用いた,アプリケーションのハードウェアへの マッピングは,最終システムの性能に大きく影響 する可能性がある. 1.3 コストを下げながらパフォーマン スを向上させる • 安い汎用マイクロプロセッサの使い勝手を向 上させたいとき,FPGAを組込みシステムに導 入する方が,高性能DSPチップや,特注ASIC 処理機能を導入するよりコストが安い. より高い解像度や,より大きなシグナルバンド 幅を扱うために,既存のシステムの処理能力を 向上させなければならない場合,必要な性能向 上は,計算資源の増強が必要な計算上の問題 かもしれないし,バンド幅問題を可決するまったく 新しいアプローチが必要になるかもしれない. 1.3 コストを下げながらパフォーマン スを向上させる • Digital signal processing (DSP)のアプリケーションは,FPGA で効果的に対処できるよい例 1. 2. • • FPGA内に処理機能を実装すると,命令に基づくプロセッサが 不要になるか,必要性を軽減できる 高性能DSPに対してFPGAのコスト/性能トレードオフの方が優 れているという逆転が,徐々にシステム設計者に知られるよ うになった(特注ASICのリスクと最初にかかるコストと比べても ずっと優れている). 計算中心のアルゴリズムのほとんどは,Cソースコードで 記述する方が,等価なハードウェア記述に比べて,少量 で済む. 信号処理や他の計算中心のアプリケーションを実現する 際,FPGAは,後にASICに変換されるプロトタイピングとし て使用されたり,実際の製品基盤として使用されたりする (フィールドソフトウェアのアップグレード可). 1.3 コストを下げながらパフォーマン スを向上させる • 多重デバイス(プロセッサ周辺機器,接続論理部)を1つの FPGAにまとめることができる. → サイズとシステムの複雑さを軽減し,初期投資を下げる. • アプリケーション各部を分担: 各処理形式の知識が必要 だが,単位コスト当たりの性能が優れている. 1. 2. • 性能が問題にならない部分(OS,ネットワークスタック,ユーザ インタフェース) → ホストマイクロプロセッサ(ARM,PowerPC, Pentium) 計算中心の部分 → 高性能DSP, FPGAの専用ハードウェア, 特注ASIC FPGAは,以前プロトタイプとして作成してきたアルゴリズ ムを,徐々に移植や検証できる. → Impulse-CのようなCに基づく設計ツールがあるとス ピードアップ 1.4 ツールの役割 • ソフトウェア開発ツールは,2つの基礎的な方法 で,アプリケーション開発の結果を改善する. 1. 目的基盤について,適切で理解が容易な抽象化を 与える.基盤のよい抽象化は,最終的な製品の最 高のパフォーマンスを生じるプログラミング法を駆 使しながら,移植性の高いアプリケーションを作成 し,テストし,デバッグすることを可能にする. 2. アプリケーションを,元の高水準記述から最適化さ れた(基盤にロードされ実行される)低水準な表現 に変換する機械的な過程に価値がある. 1.4 ツールの役割 • 理想的なツールフローでは,プログラマがこの変 換過程の特定のステップについて関知しなくても, アプリケーションが自動ツールの魔法によって, 最高の効率で動作する. 少なくとも最適化およびコード生成の仕組みや, マッピング過程の動作の仕方の基本的な理解がなけ ればならない. フローを調整する(オプションを指定するなど)か, 元のアプリケーションに戻って,アルゴリズムレベル の最適化をするかして,変換過程を制御しなければ ならない. ソフトウェアに基づく方法の重要性 • ツールの多重の役割を果たすために,新生 自動ハードウェア生成ツールは,自動コンパ イル/最適化問題と,FPGAに基づくプログラム 可能基盤クラスに意味のあるプログラミング 抽象化やプログラミングモジュールの提供の 両方に重点を置いている. • すべての新生ツールは,ソフトウェア指向設 計の経験を増やすことに重点を置いている. ソフトウェアに基づく方法の重要性 • ソフトウェア指向設計ツールが適切な理由: ソフトウェアは,従来のRTL設計より高水準の抽象 化を提供するので,複雑になっていく基盤に基づくシ ステムを管理するのに役立つ. アルゴリズムは,ソフトウェアとして仕様化され,テ ストされ,検証されるので,ソフトウェア指向設計環境 は,ほとんど,手動変換が必要ない. ソフトウェアを実行するマイクロプロセッサは,すべ ての最新システムの一部になってきた. → ソフトウェアをハードウェア実装に直接コンパイル することができる新生技術があれば,ソフトウェアが システム設計の共通語になる. ソフトウェアに基づく方法の重要性 • FPGAの適切な抽象化を提供するソフトウェア指 向プログラミング,シミュレーション,デバッグの 各ツールによって,ソフトウェア設計者およびシ ステム設計者は,どれか1つのアルゴリズムで アプリケーション開発と実験を始めることができ, ハードウェアの特定の知識を必要とせずに,き わどい設計を決定できる. • 図1-2と1-3は,ソフトウェアからハードウェアへと いう設計方法とツールを導入すると,従来のソフ トウェアおよびハードウェア設計過程が改善され ることを示している. ソフトウェアに基づく方法の重要性 ソフトウェアに基づく方法の重要性 1.5 組込みソフトウェア基盤としての FPGA • FPGA上の設計は,組込みプロセッサ上の設 計に似ている. 1. 物理デバイスをプログラミングする前のアプリ ケーションの機能のデバッグや検証に,シミュ レーションツールが使われる. 2. FPGAのツールは,複雑で,設計時間がより長く かかるが,基本設計の流れは,ハードウェア設 計というよりソフトウェア設計と見ることができる. • DSPでの設計同様,低水準な特殊性やベン ダ特有のアーキテクチャ特性も要求される. 1.5 組込みソフトウェア基盤としての FPGA • FPGAおよびプロセッサの傾向は,詳細を理解する必 要なく,すばやくアプリケーションやプロトタイプを実現 する方向である. • この本で用いるImpulse-Cは,単純なCに基づくハード ウェア/ソフトウェアの分割およびプロセス同期を与え る. 1. 設計フローは,特注の振舞いシミュレータや他のEDAを 中心にした技術を必要とせずに,従来の組込みおよび デスクトッププログラミングツールフローに統合されてき ている. 2. FPGAに基づく基盤に対する,C言語による高度に並列 化したアプリケーションのシステム指向開発を可能にす る(ソフトウェアとして自然に表現されない既存のHDL設 計手法とは,組み合わせられる場合とそうでない場合 がある). 1.5 組込みソフトウェア基盤としての FPGA • ソフトウェア指向システム設計フローの重要 な点は,ソフトウェアで獲得した設計仕様を, 最も適切な基盤資源(プロセッサorFPGA)で 実現できることである. 1.6 プログラミング抽象の重要性 • ハードウェア技術者とソフトウェア技術者の技能は, 融合しはじめている. 1. ハードウェア技術者:言語(HDLはハードウェアクラスを 抽象化する)に基づく設計を導入してきた. 2. ソフトウェア技術者:並行性やメッセージ駆動型プロセス 同期法のようなハードウェア指向の概念を設計法として 蓄積してきた. • ソフトウェア技術者がソフトウェアアプリケーションプ ログラミングからハードウェア実装へ移行するのは 困難. 高水準言語で表現する概念的アプリケーションを,目的 のハードウェアに適合した効率的なハードウェア記述に 変えなければならない. 1.6 プログラミング抽象の重要性 • 振舞い合成の進歩によるハードウェア用高水準言語 コンパイラの発展が移行を容易にしたが,RTLや低水 準最適化法の専門知識なしに,効率的でハードウェア とソフトウェアを組み合わせたアプリケーションを作成 するのは,まだ試験的な部分がある. ハードウェア/ソフトウェアインタフェースの作成には, 低水準な抽象化にしなければならない. 2. ハードウェアのタイミング駆動の特性を扱わなければ ならない. 1. • この本では,すべてのアプリケーションをCで記述で きないと認めて,ソフトウェアに基づく設計法やFPGA のツールが適切な場合はいつなのかを示す. 1.7 C言語がFPGA設計に適合するの はいつか • ソフトウェア開発とハードウェア設計に必要な低 水準な手法とは,歴史的に別々 → ハードウェア/ソフトウェアを組み合わせた解 法の実験には多くの時間がかかる. • 完全なハードウェア/ソフトウェア設計は,ソフト ウェアとハードウェアのソースファイルの集まりで 表現されるので,1つのツールで,コンパイル, シミュレーション,デバッグを行うのは容易でない. • ハードウェア設計過程は非効率 → ハードウェ アとソフトウェアの設計サイクルは同期しない. → システムインタフェースと根本的なソフトウェ ア/ハードウェア分割を早期に決定する必要 1.7 C言語がFPGA設計に適合するの はいつか • Cに基づくFPGA設計ツールの登場 → よく知られたソフトウェア設計ツールや標準C言語 を,アプリケーションの多くに使用できる. • 後の改良で,自動生成されたハードウェアを,手動で 作成したHDLコードで置き換えることができる. 性能改良を行うためにハードウェア技術者が必要な点 は,設計サイクルの後ろの方に押しやられ,システム全 体として,生産的ソフトウェア設計法を用いて設計するこ とが可能. • 高度な並列化,多重処理アプリケーションを記述する ために必要なC言語の拡張を利用することができる. • 組込みプロセッサをもつ目的基盤に対しては,ハード ウェア/ソフトウェアインタフェースを生成するのに利用 できる. 1.7 C言語がFPGA設計に適合するの はいつか • これらのツールとハードウェア/ソフトウェアア プローチで成功するカギ: アプリケーションをソフトウェア資源とハード ウェア資源に適切に分割すること よい分割戦略は,アルゴリズムの計算上の要 求ばかりでなく,データのバンド幅の要求も考慮 しなければならない. 2. ハードウェア/ソフトウェアインタフェースは,性 能上の重大なボトルネックになるかもしれない. 1. 1.7 C言語がFPGA設計に適合するの はいつか • 高度な並列アプリケーションに合ったプログラミ ングモデルを使用することが重要 1. 遠隔手続き呼び出しのような従来のプログラミング 手法を使って,特定の関数をFPGA上に移す(ハード ウェア関数:スタックで値をやりとりし,プロセッサは 結果待ちをする). 2. 重要な計算をハードウェアに実行させられるように, 特製のプロセッサ命令を生成する. 3. データフロー指向手法は,より効率的で,障害や デッドロックが起きにくい. → アプリケーションを全体として考え直す必要 1.7 C言語がFPGA設計に適合するの はいつか • 設計ツールは,多重並列プロセスの相互接続を 視覚化し,デバッグするために利用できる. 例えば,アプリケーションモニタは,標準Cデバッガ の制御下で実行しながら,アプリケーションおよびそ の構成プロセスの全体像を与えることができる. アプリケーションのボトルネックになるデータ処理量 の多い領域を特定し,分割戦略の結果を定量化する のに役立つ. ソフトウェアプロファイリング手法と組み合わせると,詳細 な解析や性能改善のために,コードの特定領域を見つける ことができる. 1.8 この本の使い方 • ゴール: 1. FPGAを媒介として,ハードウェアとソフトウェアを組み合 わせたアプリケーションの生産的な設計者を育てる. 2. 設計の導入,デバッグ,コンパイルについて,別の手段 を与える. • ソフトウェア開発者/組込みシステム設計者に対して: 1. FPGAを紹介し,歴史と,汎用ハードウェアデバイスの使 用の背景を述べ,組込みシステムに付属の計算資源と して導入する際の利点と落とし穴について理解を助ける. 2. Cを使って,並列プログラミングの概念を導入して,ハー ドウェアとソフトウェアを組み合わせたアプリケーションを 作成する点について,多くの時間を割く. 1.8 この本の使い方 • VHDL/Verilogを使っているハードウェア設計者に対して: 1. 既存の設計法にコンポーネントとしてC言語を用いるのに 役立つ. 2. 以前Cで表現してきたアルゴリズムを素早くプロトタイプ ハードウェアにすることができ,大規模で相互に結合した システムを作成して,自由に実験できる. 3. ハードウェア/ソフトウェアテストベンチや,テスト目的のコ ンポーネントを作成する別の方法を提供する. • ハードウェアおよびソフトウェア開発に対して: 1. ハードウェア/ソフトウェア分割を狭めるという他の側面か らの設計要求を学ぶことができる. 2. ハードウェア設計者とソフトウェア設計者の協調が進む.
© Copyright 2024 ExpyDoc