第1章 計算基盤としての fpga

31
第第第第第第第第 FPGA 第第 第第

Upload: ora-hudson

Post on 31-Dec-2015

32 views

Category:

Documents


2 download

DESCRIPTION

第1章 計算基盤としての FPGA. 滝本 宗宏. はじめに. FPGA に基づくプログラム可能ハードウェア基盤 → ソフトウェアアプリケーションの高速化 ハードウェア の見地:従来のマイクロプロセッサに基づくソフトウェアプログラム可能システムと,アプリケーション特注のハードウェア関数とのギャップの橋渡しをする ソフトウェア の見地: FPGA 基盤の 設計ツールや方法論がハードウェア高速化アルゴリズムの素早い作成を可能にする.. はじめに. プログラム可能ハードウェア基盤によるよいこと ソフトウェアエンジニアによる特注ハードウェア関数の作成 設計固定日時の遅延 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第1章 計算基盤としての FPGA

第1章計算基盤としての FPGA

滝本 宗宏

Page 2: 第1章 計算基盤としての FPGA

はじめに• FPGA に基づくプログラム可能ハードウェ

ア基盤 → ソフトウェアアプリケーションの高速化ハードウェアの見地:従来のマイクロプロ

セッサに基づくソフトウェアプログラム可能システムと,アプリケーション特注のハードウェア関数とのギャップの橋渡しをする

ソフトウェアの見地: FPGA 基盤の設計ツールや方法論がハードウェア高速化アルゴリズムの素早い作成を可能にする.

Page 3: 第1章 計算基盤としての FPGA

はじめに• プログラム可能ハードウェア基盤によるよいこと

1. ソフトウェアエンジニアによる特注ハードウェア関数の作成

2. 設計固定日時の遅延3. 単純化したフィールド更新4. 電気製品の多くのカテゴリから特注チップを縮小や排除

• ASIC ( applica tion-specific integrated circuit )からFPGA へ

• この章:1. FPGA と FPGA 基盤を概観2. C 言語を使った FPGA アプリケーション開発における哲学

Page 4: 第1章 計算基盤としての FPGA

1.1   FPGA とは• FPGA ( field-programmable gate array ):

1. フィールド内デバイスの操作を変更化2. プログラム可能論理ブロック(数トランジ

スタ)がプログラム可能な相互接続によって結合

3. 論理ブロック:検索表( lookup table, LUT )

Page 5: 第1章 計算基盤としての FPGA

一般的な FPGA の特徴• 論理要素: FPGA デバイスは,小さな論理要素(論理セル)配列に基

づいて構成される.• 検索表: 論理要素はプログラム可能レジスタ(1つ以上,フリッ

プフロップ)と入力(5以下)を構成する論理部(検索表)からなる.検索表は,任意の組み合わせ関数を作成できる.

• メモリ資源: 最近のほとんどの FPGA がチップ上にもっている( SRAM ).局所メモリ(論理要素内からアクセス可),共有メモリというように階層化されている.

• 経路指定(ルーティング)資源:  FPGA の柔軟性の素であり,プログラミング柔軟性と領域効率とのトレードオフが存在する.プログラム可能スイッチが, FPGA 資源を接続する.

• 構成可能 I/O :  FPGA に基づくアプリケーションには,さまざまなシステムレベルインタフェース要求があるので, FPGA は,多くのプログラム可能 I/O 特性を備えている.

Page 6: 第1章 計算基盤としての FPGA

FPGA プログラミング技術• FPGA プログラミング技術: 1回だけプログラミングができるものから

( Actel , Quicklogic ),消去可能な SRAM に基づくもの( Altera, Lattice Semiconductor, Xilinx )まである.

• SRAM に基づく消去可能なものが主流.アップグレードは,フラッシュメモリの更新や, Web や CD-ROM からバイナリイメージを取得するのと同様に容易.

• FPGA で実装されたアプリケーションは, ASIC と比べて,遅く,電力を消費する.

• FPGA の開発は,リスクとコストを劇的に引き下げ,開発時間を短縮させる.→  ASIC のプロトタイプ

• 電力消費と再構成時間の点でコストが高い再構成可能計算の将来についても述べる.

• HDL の使用や既存機能ブロックの配置によって振舞いを定義 ‐ [ 合成器 ]→  ネットリスト(バイナリ中間ファイル) ‐ [ 配置経路設定ツール ]→  ビットマップ( FPGA にダウンロード)

Page 7: 第1章 計算基盤としての FPGA

1.2   FPGA に基づくプログラム可能ハードウェア基盤

• プログラム可能ハードウェア基盤:FPGA のようなプログラム可能ハードウェア要素を含み,ソフトウェアアルゴリズムのすべてや一部を実装できるもの

• 基盤のソフト構成要素(組込みプロセッサ,周辺機器, FPGA 内で動作する組込み OS )の定義を拡張することもできる.

• 今日の FPGA : 組込みプロセッサコアと特注ハードウェア機能(図1-1 :  Intellectual property, IP ブロック)をもつ標準周辺機器との組合せは,特定のタスクや,特定のアプリケーションドメインに理想的に適合したプログラム可能基盤を専用に作成することが可能

• プログラム可能基盤に基づく設計の試みは,元からシステム設計者とソフトウェアアプリケーション開発者の領域

• ソフトウェアアプリケーション開発者には,設計のどの部分がハードウェアになり,どの部分を従来のプロセッサ上のソフトウェアとして実装すべきか,離散デバイスと FPGA 基盤内に組み込まれたプロセッサコアのいずれを用いるか,システム設計者ほど明らかでない.

Page 8: 第1章 計算基盤としての FPGA
Page 9: 第1章 計算基盤としての FPGA

1.2   FPGA に基づくプログラム可能ハードウェア基盤

• ソフトウェアアプリケーション開発者にとって,アプリケーションやアルゴリズムを全体として考慮し,アルゴリズムの並行性を向上させ,可能な最高の性能を発揮させるために,並列プログラミング手法を利用することが,ずっと根本的.

• アプリケーション開発者が,設計の初期のフェーズで行う根本的な決定,アルゴリズム分割の効果,自動コンパイラやハードウェア合成ツールを用いた,アプリケーションのハードウェアへのマッピングは,最終システムの性能に大きく影響する可能性がある.

Page 10: 第1章 計算基盤としての FPGA

1.3  コストを下げながらパフォーマンスを向上させる

• 安い汎用マイクロプロセッサの使い勝手を向上させたいとき, FPGA を組込みシステムに導入する方が,高性能 DSP チップや,特注ASIC処理機能を導入するよりコストが安い. より高い解像度や,より大きなシグナルバンド幅を扱うために,既存のシステムの処理能力を向上させなければならない場合,必要な性能向上は,計算資源の増強が必要な計算上の問題かもしれないし,バンド幅問題を可決するまったく新しいアプローチが必要になるかもしれない.

Page 11: 第1章 計算基盤としての FPGA

1.3  コストを下げながらパフォーマンスを向上させる

• Digital signal processing (DSP) のアプリケーションは, FPGA で効果的に対処できるよい例1. FPGA 内に処理機能を実装すると,命令に基づくプロセッサが不要

になるか,必要性を軽減できる2. 高性能 DSP に対して FPGA のコスト / 性能トレードオフの方が優れ

ているという逆転が,徐々にシステム設計者に知られるようになった(特注 ASIC のリスクと最初にかかるコストと比べてもずっと優れている).

• 計算中心のアルゴリズムのほとんどは, C ソースコードで記述する方が,等価なハードウェア記述に比べて,少量で済む.

• 信号処理や他の計算中心のアプリケーションを実現する際,FPGA は,後に ASIC に変換されるプロトタイピングとして使用されたり,実際の製品基盤として使用されたりする(フィールドソフトウェアのアップグレード可).

Page 12: 第1章 計算基盤としての FPGA

1.3  コストを下げながらパフォーマンスを向上させる

• 多重デバイス(プロセッサ周辺機器,接続論理部)を1つのFPGA にまとめることができる.→ サイズとシステムの複雑さを軽減し,初期投資を下げる.

• アプリケーション各部を分担: 各処理形式の知識が必要だが,単位コスト当たりの性能が優れている.1. 性能が問題にならない部分( OS ,ネットワークスタック,ユーザインタフェース) → ホストマイクロプロセッサ( ARM ,PowerPC , Pentium )

2. 計算中心の部分 → 高性能 DSP,   FPGA の専用ハードウェア,特注 ASIC

• FPGA は,以前プロトタイプとして作成してきたアルゴリズムを,徐々に移植や検証できる.→  Impulse-C のような C に基づく設計ツールがあるとスピードアップ

Page 13: 第1章 計算基盤としての FPGA

1.4  ツールの役割• ソフトウェア開発ツールは,2つの基礎的な方

法で,アプリケーション開発の結果を改善する.1. 目的基盤について,適切で理解が容易な抽象化を与

える.基盤のよい抽象化は,最終的な製品の最高のパフォーマンスを生じるプログラミング法を駆使しながら,移植性の高いアプリケーションを作成し,テストし,デバッグすることを可能にする.

2. アプリケーションを,元の高水準記述から最適化された(基盤にロードされ実行される)低水準な表現に変換する機械的な過程に価値がある.

Page 14: 第1章 計算基盤としての FPGA

1.4  ツールの役割• 理想的なツールフローでは,プログラマがこの

変換過程の特定のステップについて関知しなくても,アプリケーションが自動ツールの魔法によって,最高の効率で動作する. 少なくとも最適化およびコード生成の仕組みや,

マッピング過程の動作の仕方の基本的な理解がなければならない.

 フローを調整する(オプションを指定するなど)か,元のアプリケーションに戻って,アルゴリズムレベルの最適化をするかして,変換過程を制御しなければならない.

Page 15: 第1章 計算基盤としての FPGA

ソフトウェアに基づく方法の重要性

• ツールの多重の役割を果たすために,新生自動ハードウェア生成ツールは,自動コンパイル / 最適化問題と, FPGA に基づくプログラム可能基盤クラスに意味のあるプログラミング抽象化やプログラミングモジュールの提供の両方に重点を置いている.

• すべての新生ツールは,ソフトウェア指向設計の経験を増やすことに重点を置いている.

Page 16: 第1章 計算基盤としての FPGA

ソフトウェアに基づく方法の重要性

• ソフトウェア指向設計ツールが適切な理由: ソフトウェアは,従来の RTL 設計より高水準の抽象化

を提供するので,複雑になっていく基盤に基づくシステムを管理するのに役立つ.

 アルゴリズムは,ソフトウェアとして仕様化され,テストされ,検証されるので,ソフトウェア指向設計環境は,ほとんど,手動変換が必要ない.

 ソフトウェアを実行するマイクロプロセッサは,すべての最新システムの一部になってきた.→ ソフトウェアをハードウェア実装に直接コンパイルすることができる新生技術があれば,ソフトウェアがシステム設計の共通語になる.

Page 17: 第1章 計算基盤としての FPGA

ソフトウェアに基づく方法の重要性

• FPGA の適切な抽象化を提供するソフトウェア指向プログラミング,シミュレーション,デバッグの各ツールによって,ソフトウェア設計者およびシステム設計者は,どれか1つのアルゴリズムでアプリケーション開発と実験を始めることができ,ハードウェアの特定の知識を必要とせずに,きわどい設計を決定できる.

• 図 1-2 と 1-3 は,ソフトウェアからハードウェアへという設計方法とツールを導入すると,従来のソフトウェアおよびハードウェア設計過程が改善されることを示している.

Page 18: 第1章 計算基盤としての FPGA

ソフトウェアに基づく方法の重要性

Page 19: 第1章 計算基盤としての FPGA

ソフトウェアに基づく方法の重要性

Page 20: 第1章 計算基盤としての FPGA

1.5  組込みソフトウェア基盤としてのFPGA

• FPGA 上の設計は,組込みプロセッサ上の設計に似ている.1. 物理デバイスをプログラミングする前のアプリ

ケーションの機能のデバッグや検証に,シミュレーションツールが使われる.

2. FPGA のツールは,複雑で,設計時間がより長くかかるが,基本設計の流れは,ハードウェア設計というよりソフトウェア設計と見ることができる.

• DSP での設計同様,低水準な特殊性やベンダ特有のアーキテクチャ特性も要求される.

Page 21: 第1章 計算基盤としての FPGA

1.5  組込みソフトウェア基盤としてのFPGA

• FPGA およびプロセッサの傾向は,詳細を理解する必要なく,すばやくアプリケーションやプロトタイプを実現する方向である.

• この本で用いる Impulse-C は,単純な C に基づくハードウェア / ソフトウェアの分割およびプロセス同期を与える.1. 設計フローは,特注の振舞いシミュレータや他の EDA を中心にした技術を必要とせずに,従来の組込みおよびデスクトッププログラミングツールフローに統合されてきている.

2. FPGA に基づく基盤に対する, C 言語による高度に並列化したアプリケーションのシステム指向開発を可能にする(ソフトウェアとして自然に表現されない既存の HDL 設計手法とは,組み合わせられる場合とそうでない場合がある).

Page 22: 第1章 計算基盤としての FPGA

1.5  組込みソフトウェア基盤としてのFPGA

• ソフトウェア指向システム設計フローの重要な点は,ソフトウェアで獲得した設計仕様を,最も適切な基盤資源(プロセッサ orFPGA )で実現できることである.

Page 23: 第1章 計算基盤としての FPGA

1.6  プログラミング抽象の重要性• ハードウェア技術者とソフトウェア技術者の技能は,融

合しはじめている.1. ハードウェア技術者:言語( HDL はハードウェアクラスを抽象化する)に基づく設計を導入してきた.

2. ソフトウェア技術者:並行性やメッセージ駆動型プロセス同期法のようなハードウェア指向の概念を設計法として蓄積してきた.

• ソフトウェア技術者がソフトウェアアプリケーションプログラミングからハードウェア実装へ移行するのは困難.

 高水準言語で表現する概念的アプリケーションを,目的のハードウェアに適合した効率的なハードウェア記述に変えなければならない.

Page 24: 第1章 計算基盤としての FPGA

1.6  プログラミング抽象の重要性

• 振舞い合成の進歩によるハードウェア用高水準言語コンパイラの発展が移行を容易にしたが, RTL や低水準最適化法の専門知識なしに,効率的でハードウェアとソフトウェアを組み合わせたアプリケーションを作成するのは,まだ試験的な部分がある.1.  ハードウェア / ソフトウェアインタフェースの作成には,低水準な抽象化にしなければならない.

2.  ハードウェアのタイミング駆動の特性を扱わなければならない.

• この本では,すべてのアプリケーションを C で記述できないと認めて,ソフトウェアに基づく設計法や FPGAのツールが適切な場合はいつなのかを示す.

Page 25: 第1章 計算基盤としての FPGA

1.7   C 言語が FPGA 設計に適合するのはいつか

• ソフトウェア開発とハードウェア設計に必要な低水準な手法とは,歴史的に別々→ ハードウェア / ソフトウェアを組み合わせた解法の実験には多くの時間がかかる.

• 完全なハードウェア / ソフトウェア設計は,ソフトウェアとハードウェアのソースファイルの集まりで表現されるので,1つのツールで,コンパイル,シミュレーション,デバッグを行うのは容易でない.

• ハードウェア設計過程は非効率 → ハードウェアとソフトウェアの設計サイクルは同期しない.→ システムインタフェースと根本的なソフトウェア / ハードウェア分割を早期に決定する必要

Page 26: 第1章 計算基盤としての FPGA

1.7   C 言語が FPGA 設計に適合するのはいつか

• C に基づく FPGA 設計ツールの登場→ よく知られたソフトウェア設計ツールや標準 C 言語を,アプリケーションの多くに使用できる.

• 後の改良で,自動生成されたハードウェアを,手動で作成した HDL コードで置き換えることができる. 性能改良を行うためにハードウェア技術者が必要な点は,

設計サイクルの後ろの方に押しやられ,システム全体として,生産的ソフトウェア設計法を用いて設計することが可能.

• 高度な並列化,多重処理アプリケーションを記述するために必要な C 言語の拡張を利用することができる.

• 組込みプロセッサをもつ目的基盤に対しては,ハードウェア / ソフトウェアインタフェースを生成するのに利用できる.

Page 27: 第1章 計算基盤としての FPGA

1.7   C 言語が FPGA 設計に適合するのはいつか

• これらのツールとハードウェア / ソフトウェアアプローチで成功するカギ: アプリケーションをソフトウェア資源とハードウェア資源に適切に分割すること1.  よい分割戦略は,アルゴリズムの計算上

の要求ばかりでなく,データのバンド幅の要求も考慮しなければならない.

2.  ハードウェア / ソフトウェアインタフェースは,性能上の重大なボトルネックになるかもしれない.

Page 28: 第1章 計算基盤としての FPGA

1.7   C 言語が FPGA 設計に適合するのはいつか

• 高度な並列アプリケーションに合ったプログラミングモデルを使用することが重要1. 遠隔手続き呼び出しのような従来のプログラミン

グ手法を使って,特定の関数を FPGA 上に移す(ハードウェア関数:スタックで値をやりとりし,プロセッサは結果待ちをする).

2. 重要な計算をハードウェアに実行させられるように,特製のプロセッサ命令を生成する.

3. データフロー指向手法は,より効率的で,障害やデッドロックが起きにくい.→ アプリケーションを全体として考え直す必要

Page 29: 第1章 計算基盤としての FPGA

1.7   C 言語が FPGA 設計に適合するのはいつか

• 設計ツールは,多重並列プロセスの相互接続を視覚化し,デバッグするために利用できる. 例えば,アプリケーションモニタは,標準 C デ

バッガの制御下で実行しながら,アプリケーションおよびその構成プロセスの全体像を与えることができる.

 アプリケーションのボトルネックになるデータ処理量の多い領域を特定し,分割戦略の結果を定量化するのに役立つ. ソフトウェアプロファイリング手法と組み合わせると,詳細な解析や性能改善のために,コードの特定領域を見つけることができる.

Page 30: 第1章 計算基盤としての FPGA

1.8  この本の使い方• ゴール:

1. FPGA を媒介として,ハードウェアとソフトウェアを組み合わせたアプリケーションの生産的な設計者を育てる.

2. 設計の導入,デバッグ,コンパイルについて,別の手段を与える.

• ソフトウェア開発者 / 組込みシステム設計者に対して:1. FPGA を紹介し,歴史と,汎用ハードウェアデバイスの使用

の背景を述べ,組込みシステムに付属の計算資源として導入する際の利点と落とし穴について理解を助ける.

2. C を使って,並列プログラミングの概念を導入して,ハードウェアとソフトウェアを組み合わせたアプリケーションを作成する点について,多くの時間を割く.

Page 31: 第1章 計算基盤としての FPGA

1.8  この本の使い方• VHDL/Verilog を使っているハードウェア設計者に対して:

1. 既存の設計法にコンポーネントとして C 言語を用いるのに役立つ.

2. 以前 C で表現してきたアルゴリズムを素早くプロトタイプハードウェアにすることができ,大規模で相互に結合したシステムを作成して,自由に実験できる.

3. ハードウェア / ソフトウェアテストベンチや,テスト目的のコンポーネントを作成する別の方法を提供する.

• ハードウェアおよびソフトウェア開発に対して:1. ハードウェア / ソフトウェア分割を狭めるという他の側面か

らの設計要求を学ぶことができる.2. ハードウェア設計者とソフトウェア設計者の協調が進む.