第1章 計算基盤としてのFPGA 滝本 宗宏.

Slides:



Advertisements
Similar presentations
FPGA 株式会社アプライド・マーケティング 大越 章司
Advertisements

Chapter11-4(前半) 加藤健.
LZ圧縮回路の設計とハード・ソフト 最適分割の検討 電子情報デザイン学科 高性能計算研究室 4回生 中山 和也 2009/2/27.
Capter9 Creating an Embedded Test Bench ( )
計算機システムⅡ 主記憶装置とALU,レジスタの制御
第4章 Impulse C の導入 安達ほのか シグナルやストリーム 、メモリーは型だからそのまま訳す.
第7章 データベース管理システム 7.1 データベース管理システムの概要 7.2 データベースの格納方式 7.3 問合せ処理.
プログラムはなぜ動くのか.
第5回 CPUの役割と仕組み3 割り込み、パイプライン、並列処理
画像処理ボード上での 高速テンプレートマッチングの 実装と検証
Ibaraki Univ. Dept of Electrical & Electronic Eng.
UNIXについて 松野秀平.
演算/メモリ性能バランスを考慮した マルチコア向けオンチップメモリ貸与法
組み込み向けCPU 小型デバイスに搭載されるCPU 特徴 携帯電話,デジタルカメラ,PDA,センサデバイスなど 小型 低消費電力 多機能
MPIによる行列積計算 情報論理工学研究室 渡邉伊織 情報論理工学研究室 渡邉伊織です。
Oracle APEX Forms変換の概要
型付きアセンブリ言語を用いた安全なカーネル拡張
OpenMPハードウェア動作合成システムの検証(Ⅰ)
オペレーティングシステムJ/K (実時間処理システム)
高速剰余算アルゴリズムとそのハードウェア実装についての研究
ソフトウェア情報学総論 基盤ソフトウェア学講座
コンピュータ系実験Ⅲ 「ワンチップマイコンの応用」 第1週目 アセンブリ言語講座
実行時情報に基づく OSカーネルのコンフィグ最小化
仮想メモリを用いた VMマイグレーションの高速化
社会シミュレーションのための モデル作成環境
オペレーティングシステムJ/K (仮想記憶管理)
第7回 授業計画の修正 中間テストの解説・復習 前回の補足(クロックアルゴリズム・PFF) 仮想記憶方式のまとめ 特別課題について
Ibaraki Univ. Dept of Electrical & Electronic Eng.
ゲーム開発モデルの基礎.
プログラミング基礎a 第1回 ハードウェアとソフトウェア プログラミング総論 ~プログラミング言語とは~
オープンソース開発支援のための ソースコード及びメールの履歴対応表示システム
FPGA 株式会社アプライド・マーケティング 大越 章司
ディジタル回路の設計と CADによるシステム設計
アプリケーション依存の先読みが可能なO/Rマッピングツール
Ibaraki Univ. Dept of Electrical & Electronic Eng.
先週の復習: CPU が働く仕組み コンピュータの構造 pp 制御装置+演算装置+レジスタ 制御装置がなければ電卓と同様
コンピュータの仕組み 〜ハードウェア〜 1E15M009-3 伊藤佳樹 1E15M035-2 柴田将馬 1E15M061-1 花岡沙紀
UMLの概要とオブジェクト指向の基本概念
Ibaraki Univ. Dept of Electrical & Electronic Eng.
第5回 メモリ管理(2) オーバレイ方式 論理アドレスとプログラムの再配置 静的再配置と動的再配置 仮想記憶とメモリ階層 セグメンテーション
Ibaraki Univ. Dept of Electrical & Electronic Eng.
コンピュータアーキテクチャ 第 9 回.
コンパイラ 2012年10月1日
Handel-Cを用いた パックマンの設計
設計情報の再利用を目的とした UML図の自動推薦ツール
「マイグレーションを支援する分散集合オブジェクト」
プログラムの差分記述を 容易に行うための レイヤー機構付きIDEの提案
コンピュータアーキテクチャ 第 5 回.
メソッドの同時更新履歴を用いたクラスの機能別分類法
Ibaraki Univ. Dept of Electrical & Electronic Eng.
開発作業の形式化に基づく プロセス評価 松下誠 大阪大学.
FPGA 株式会社アプライド・マーケティング 大越 章司
ソフトウェア工学 知能情報学部 新田直也.
ソフトウェア工学 理工学部 情報システム工学科 新田直也.
プロセッサ設計支援ツールを用いた 独自プロセッサの設計
コンピュータアーキテクチャ 第 9 回.
コンピュータアーキテクチャ 第 5 回.
MPIを用いた並列処理計算 情報論理工学研究室 金久 英之
ソフトウェア工学 知能情報学部 新田直也.
プログラムの一時停止時に 将来の実行情報を提供するデバッガ
IPmigrate:複数ホストに分割されたVMの マイグレーション手法
知識ベースの試作計画 ●●●研究所 ●●●技術部 稲本□□ 1997年1月.
プログラミング言語論 第九回 理工学部 情報システム工学科 新田直也.
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
プログラミング言語論 第九回 理工学部 情報システム工学科 新田直也.
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
ベイジアンネットワークと クラスタリング手法を用いたWeb障害検知システムの開発
Ibaraki Univ. Dept of Electrical & Electronic Eng.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
Presentation transcript:

第1章 計算基盤としてのFPGA 滝本 宗宏

はじめに FPGAに基づくプログラム可能ハードウェア基盤 → ソフトウェアアプリケーションの高速化 ハードウェアの見地:従来のマイクロプロセッサに基づくソフトウェアプログラム可能システムと,アプリケーション特注のハードウェア関数とのギャップの橋渡しをする ソフトウェアの見地:FPGA基盤の設計ツールや方法論がハードウェア高速化アルゴリズムの素早い作成を可能にする.

はじめに プログラム可能ハードウェア基盤によるよいこと ソフトウェアエンジニアによる特注ハードウェア関数の作成 設計固定日時の遅延 単純化したフィールド更新 電気製品の多くのカテゴリから特注チップを縮小や排除 ASIC(applica tion-specific integrated circuit)からFPGAへ この章: FPGAとFPGA基盤を概観 C言語を使ったFPGAアプリケーション開発における哲学

1.1 FPGAとは FPGA(field-programmable gate array): フィールド内デバイスの操作を変更化 プログラム可能論理ブロック(数トランジスタ)がプログラム可能な相互接続によって結合 論理ブロック:検索表(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内で動作する組込みOS)の定義を拡張することもできる. 今日のFPGA: 組込みプロセッサコアと特注ハードウェア機能(図1-1: Intellectual property, IP ブロック)をもつ標準周辺機器との組合せは,特定のタスクや,特定のアプリケーションドメインに理想的に適合したプログラム可能基盤を専用に作成することが可能 プログラム可能基盤に基づく設計の試みは,元からシステム設計者とソフトウェアアプリケーション開発者の領域 ソフトウェアアプリケーション開発者には,設計のどの部分がハードウェアになり,どの部分を従来のプロセッサ上のソフトウェアとして実装すべきか,離散デバイスとFPGA基盤内に組み込まれたプロセッサコアのいずれを用いるか,システム設計者ほど明らかでない.

1.2 FPGAに基づくプログラム可能ハードウェア基盤 ソフトウェアアプリケーション開発者にとって,アプリケーションやアルゴリズムを全体として考慮し,アルゴリズムの並行性を向上させ,可能な最高の性能を発揮させるために,並列プログラミング手法を利用することが,ずっと根本的. アプリケーション開発者が,設計の初期のフェーズで行う根本的な決定,アルゴリズム分割の効果,自動コンパイラやハードウェア合成ツールを用いた,アプリケーションのハードウェアへのマッピングは,最終システムの性能に大きく影響する可能性がある.

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

1.3 コストを下げながらパフォーマンスを向上させる 1.3 コストを下げながらパフォーマンスを向上させる Digital signal processing (DSP)のアプリケーションは,FPGAで効果的に対処できるよい例 FPGA内に処理機能を実装すると,命令に基づくプロセッサが不要になるか,必要性を軽減できる 高性能DSPに対してFPGAのコスト/性能トレードオフの方が優れているという逆転が,徐々にシステム設計者に知られるようになった(特注ASICのリスクと最初にかかるコストと比べてもずっと優れている). 計算中心のアルゴリズムのほとんどは,Cソースコードで記述する方が,等価なハードウェア記述に比べて,少量で済む. 信号処理や他の計算中心のアプリケーションを実現する際,FPGAは,後にASICに変換されるプロトタイピングとして使用されたり,実際の製品基盤として使用されたりする(フィールドソフトウェアのアップグレード可).

1.3 コストを下げながらパフォーマンスを向上させる 1.3 コストを下げながらパフォーマンスを向上させる 多重デバイス(プロセッサ周辺機器,接続論理部)を1つのFPGAにまとめることができる. → サイズとシステムの複雑さを軽減し,初期投資を下げる. アプリケーション各部を分担: 各処理形式の知識が必要だが,単位コスト当たりの性能が優れている. 性能が問題にならない部分(OS,ネットワークスタック,ユーザインタフェース) → ホストマイクロプロセッサ(ARM,PowerPC,Pentium) 計算中心の部分 → 高性能DSP, FPGAの専用ハードウェア,特注ASIC FPGAは,以前プロトタイプとして作成してきたアルゴリズムを,徐々に移植や検証できる. → Impulse-CのようなCに基づく設計ツールがあるとスピードアップ

1.4 ツールの役割 ソフトウェア開発ツールは,2つの基礎的な方法で,アプリケーション開発の結果を改善する. 1.4 ツールの役割 ソフトウェア開発ツールは,2つの基礎的な方法で,アプリケーション開発の結果を改善する. 目的基盤について,適切で理解が容易な抽象化を与える.基盤のよい抽象化は,最終的な製品の最高のパフォーマンスを生じるプログラミング法を駆使しながら,移植性の高いアプリケーションを作成し,テストし,デバッグすることを可能にする. アプリケーションを,元の高水準記述から最適化された(基盤にロードされ実行される)低水準な表現に変換する機械的な過程に価値がある.

1.4 ツールの役割 理想的なツールフローでは,プログラマがこの変換過程の特定のステップについて関知しなくても,アプリケーションが自動ツールの魔法によって,最高の効率で動作する.  少なくとも最適化およびコード生成の仕組みや,マッピング過程の動作の仕方の基本的な理解がなければならない.  フローを調整する(オプションを指定するなど)か,元のアプリケーションに戻って,アルゴリズムレベルの最適化をするかして,変換過程を制御しなければならない.

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

ソフトウェアに基づく方法の重要性 ソフトウェア指向設計ツールが適切な理由:  ソフトウェアは,従来のRTL設計より高水準の抽象化を提供するので,複雑になっていく基盤に基づくシステムを管理するのに役立つ.  アルゴリズムは,ソフトウェアとして仕様化され,テストされ,検証されるので,ソフトウェア指向設計環境は,ほとんど,手動変換が必要ない.  ソフトウェアを実行するマイクロプロセッサは,すべての最新システムの一部になってきた. → ソフトウェアをハードウェア実装に直接コンパイルすることができる新生技術があれば,ソフトウェアがシステム設計の共通語になる.

ソフトウェアに基づく方法の重要性 FPGAの適切な抽象化を提供するソフトウェア指向プログラミング,シミュレーション,デバッグの各ツールによって,ソフトウェア設計者およびシステム設計者は,どれか1つのアルゴリズムでアプリケーション開発と実験を始めることができ,ハードウェアの特定の知識を必要とせずに,きわどい設計を決定できる. 図1-2と1-3は,ソフトウェアからハードウェアへという設計方法とツールを導入すると,従来のソフトウェアおよびハードウェア設計過程が改善されることを示している.

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

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

1.5 組込みソフトウェア基盤としてのFPGA FPGA上の設計は,組込みプロセッサ上の設計に似ている. 物理デバイスをプログラミングする前のアプリケーションの機能のデバッグや検証に,シミュレーションツールが使われる. FPGAのツールは,複雑で,設計時間がより長くかかるが,基本設計の流れは,ハードウェア設計というよりソフトウェア設計と見ることができる. DSPでの設計同様,低水準な特殊性やベンダ特有のアーキテクチャ特性も要求される.

1.5 組込みソフトウェア基盤としてのFPGA FPGAおよびプロセッサの傾向は,詳細を理解する必要なく,すばやくアプリケーションやプロトタイプを実現する方向である. この本で用いるImpulse-Cは,単純なCに基づくハードウェア/ソフトウェアの分割およびプロセス同期を与える. 設計フローは,特注の振舞いシミュレータや他のEDAを中心にした技術を必要とせずに,従来の組込みおよびデスクトッププログラミングツールフローに統合されてきている. FPGAに基づく基盤に対する,C言語による高度に並列化したアプリケーションのシステム指向開発を可能にする(ソフトウェアとして自然に表現されない既存のHDL設計手法とは,組み合わせられる場合とそうでない場合がある).

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

1.6 プログラミング抽象の重要性 ハードウェア技術者とソフトウェア技術者の技能は,融合しはじめている. 1.6 プログラミング抽象の重要性 ハードウェア技術者とソフトウェア技術者の技能は,融合しはじめている. ハードウェア技術者:言語(HDLはハードウェアクラスを抽象化する)に基づく設計を導入してきた. ソフトウェア技術者:並行性やメッセージ駆動型プロセス同期法のようなハードウェア指向の概念を設計法として蓄積してきた. ソフトウェア技術者がソフトウェアアプリケーションプログラミングからハードウェア実装へ移行するのは困難.  高水準言語で表現する概念的アプリケーションを,目的のハードウェアに適合した効率的なハードウェア記述に変えなければならない.

1.6 プログラミング抽象の重要性 振舞い合成の進歩によるハードウェア用高水準言語コンパイラの発展が移行を容易にしたが,RTLや低水準最適化法の専門知識なしに,効率的でハードウェアとソフトウェアを組み合わせたアプリケーションを作成するのは,まだ試験的な部分がある.  ハードウェア/ソフトウェアインタフェースの作成には,低水準な抽象化にしなければならない.  ハードウェアのタイミング駆動の特性を扱わなければならない. この本では,すべてのアプリケーションをCで記述できないと認めて,ソフトウェアに基づく設計法やFPGAのツールが適切な場合はいつなのかを示す.

1.7 C言語がFPGA設計に適合するのはいつか ソフトウェア開発とハードウェア設計に必要な低水準な手法とは,歴史的に別々 → ハードウェア/ソフトウェアを組み合わせた解法の実験には多くの時間がかかる. 完全なハードウェア/ソフトウェア設計は,ソフトウェアとハードウェアのソースファイルの集まりで表現されるので,1つのツールで,コンパイル,シミュレーション,デバッグを行うのは容易でない. ハードウェア設計過程は非効率 → ハードウェアとソフトウェアの設計サイクルは同期しない. → システムインタフェースと根本的なソフトウェア/ハードウェア分割を早期に決定する必要

1.7 C言語がFPGA設計に適合するのはいつか Cに基づくFPGA設計ツールの登場 → よく知られたソフトウェア設計ツールや標準C言語を,アプリケーションの多くに使用できる. 後の改良で,自動生成されたハードウェアを,手動で作成したHDLコードで置き換えることができる.  性能改良を行うためにハードウェア技術者が必要な点は,設計サイクルの後ろの方に押しやられ,システム全体として,生産的ソフトウェア設計法を用いて設計することが可能. 高度な並列化,多重処理アプリケーションを記述するために必要なC言語の拡張を利用することができる. 組込みプロセッサをもつ目的基盤に対しては,ハードウェア/ソフトウェアインタフェースを生成するのに利用できる.

1.7 C言語がFPGA設計に適合するのはいつか これらのツールとハードウェア/ソフトウェアアプローチで成功するカギ:  アプリケーションをソフトウェア資源とハードウェア資源に適切に分割すること  よい分割戦略は,アルゴリズムの計算上の要求ばかりでなく,データのバンド幅の要求も考慮しなければならない.  ハードウェア/ソフトウェアインタフェースは,性能上の重大なボトルネックになるかもしれない.

1.7 C言語がFPGA設計に適合するのはいつか 高度な並列アプリケーションに合ったプログラミングモデルを使用することが重要 遠隔手続き呼び出しのような従来のプログラミング手法を使って,特定の関数をFPGA上に移す(ハードウェア関数:スタックで値をやりとりし,プロセッサは結果待ちをする). 重要な計算をハードウェアに実行させられるように,特製のプロセッサ命令を生成する. データフロー指向手法は,より効率的で,障害やデッドロックが起きにくい. → アプリケーションを全体として考え直す必要

1.7 C言語がFPGA設計に適合するのはいつか 設計ツールは,多重並列プロセスの相互接続を視覚化し,デバッグするために利用できる.  例えば,アプリケーションモニタは,標準Cデバッガの制御下で実行しながら,アプリケーションおよびその構成プロセスの全体像を与えることができる.  アプリケーションのボトルネックになるデータ処理量の多い領域を特定し,分割戦略の結果を定量化するのに役立つ.  ソフトウェアプロファイリング手法と組み合わせると,詳細な解析や性能改善のために,コードの特定領域を見つけることができる.

1.8 この本の使い方 ゴール: ソフトウェア開発者/組込みシステム設計者に対して: 1.8 この本の使い方 ゴール: FPGAを媒介として,ハードウェアとソフトウェアを組み合わせたアプリケーションの生産的な設計者を育てる. 設計の導入,デバッグ,コンパイルについて,別の手段を与える. ソフトウェア開発者/組込みシステム設計者に対して: FPGAを紹介し,歴史と,汎用ハードウェアデバイスの使用の背景を述べ,組込みシステムに付属の計算資源として導入する際の利点と落とし穴について理解を助ける. Cを使って,並列プログラミングの概念を導入して,ハードウェアとソフトウェアを組み合わせたアプリケーションを作成する点について,多くの時間を割く.

1.8 この本の使い方 VHDL/Verilogを使っているハードウェア設計者に対して: ハードウェアおよびソフトウェア開発に対して: 1.8 この本の使い方 VHDL/Verilogを使っているハードウェア設計者に対して: 既存の設計法にコンポーネントとしてC言語を用いるのに役立つ. 以前Cで表現してきたアルゴリズムを素早くプロトタイプハードウェアにすることができ,大規模で相互に結合したシステムを作成して,自由に実験できる. ハードウェア/ソフトウェアテストベンチや,テスト目的のコンポーネントを作成する別の方法を提供する. ハードウェアおよびソフトウェア開発に対して: ハードウェア/ソフトウェア分割を狭めるという他の側面からの設計要求を学ぶことができる. ハードウェア設計者とソフトウェア設計者の協調が進む.