FPGA エクストリーム・コンピューティング第3回
-
Upload
kenichi-kurimoto -
Category
Documents
-
view
2.501 -
download
3
Transcript of FPGA エクストリーム・コンピューティング第3回
栗元憲一http://k2-garage.com
mjpeg stream viewer on FPGA
13年9月1日日曜日
Agenda
introduction 1. 発表概要 & 予備知識main 2. JPEGアルゴリズム 3. softwareのみでmotionJPEG再生 4. 一部処理をhardware化 5. JPEG処理をhardware化 6. まとめ 7. エクストリームなおまけ
13年9月1日日曜日
自己紹介
SoCカスタムデータパスハードマクロ
static timing analyzer大学院で論理合成アルゴリズム研究
SoCの物理実装不揮発メモリ開発
トランジスタばらつき測定システム
物理実装とCSを10年以上やってました。
13年9月1日日曜日
書籍出版しました
表テーマソフトウェア処理で重たい部分をハードウェア化して高速化する手法を学ぶ
実習書です。
対象読者
SoC開発のエッセンスを学びたい人
13年9月1日日曜日
概要
LAN上にあるサーバからmotionJPEGファイルをストリーミング。FPGA上のSoCで動画表示
このようなSoCを開発することでSoC開発のエッセンス(ソフト処理をハード処理にすることで高速化する)を学習します。
13年9月1日日曜日
こんな感じのSoCをFPGA上で動かします
13年9月1日日曜日
開発フロー
ソフトウェア処理をハードウェア処理に変更することでfpsが向上。ハードウェア処理が何故高速なのかを学習。
13年9月1日日曜日
予備知識: memory
SRAMDRAM
面積 小 大速度 遅 速製造 専用 標準logic
13年9月1日日曜日
予備知識: FPGA
FPGA内部構造前ページのHDLを全く別の方法で動作させます。
4~5入力のSRAMのメモリの中の値と接続を変更することで任意のlogicを実現
13年9月1日日曜日
Agenda
introduction 1. 発表概要 & 予備知識main 2. JPEGアルゴリズム 3. softwareのみでmotionJPEG再生 4. 一部処理をhardware化 5. JPEG処理をhardware化 6. まとめ 7. エクストリームなおまけ
13年9月1日日曜日
JPEG decode Algorithmの主な構造
huffman decode
量子化を戻す
2D-DCT変換
YCbCr-RGB変換
13年9月1日日曜日
YCbCr-RGB変換
R = Y + 1.40200(Cr-128)G = Y -0.34414(Cb-128) - 0.71414(Cr-128)B = Y +1.77200(Cb-128)
単なる色空間の変換演算です!今日はここにFocus!
13年9月1日日曜日
Agenda
introduction 1. 発表概要 & 予備知識main 2. JPEGアルゴリズム 3. softwareのみでmotionJPEG再生 4. 一部処理をhardware化 5. JPEG処理をhardware化 6. まとめ 7. エクストリームなおまけ
13年9月1日日曜日
FPGA上にSoCを実現!
13年9月1日日曜日
開発するSoC
SPARC V8 CPU, AHB・APBバス, ethernet mac......
13年9月1日日曜日
最初にFPGA上にSoCをインプリLinuxをブートしてソフトウェアのみで
システムを動作させる。
13年9月1日日曜日
aeroflex gaisler社からGPLライセンスのSoCが公開されていて、前出の図からjpegモジュールを除いたSoCが40種類ぐらいのボードでmakeコマンド一つで実装できます。
この状態でrepositoryに含めてます
13年9月1日日曜日
linuxについてもconfigurationさえすれば動作するsnapgear-linuxが公開されてます。
この状態でrepositoryに含めてます
13年9月1日日曜日
jpegソフトウェアについては定評のあるIJG(International Jpeg Group)のjpeg library
を使用します。
linuxのユーザランドアプリのディレクトリとしてrepositoryに含めてます
13年9月1日日曜日
softもhardもgitで管理
sourceforgeの MJPEG-LEON-FPGA にrepositoryがあります。
xilinxalteraactel
ASICでも!動作します
13年9月1日日曜日
Boot!
とりあえず、フレームバッファにコンソール出力するとこうなります。以降はコンソールはUART。
13年9月1日日曜日
IJG付属のjpeg表示ソフトを少し変更するとmotionJPEG表示できます。
遅い!!!!!! (こんなに小さな画面でもカクカク)
(ちなみに動作周波数40MHz)13年9月1日日曜日
ちなみにVGAサイズだと、、、
13年9月1日日曜日
gprofを用いて処理時間を測定
Each sample counts as 0.01 seconds.% cumulative self self total time seconds seconds calls ms/call ms/call name 32.26 0.20 0.20 62424 0.00 0.00 decode_mcu24.19 0.35 0.15 249696 0.00 0.00 jpeg_idct_islow20.97 0.48 0.13 2448 0.05 0.05 ycc_rgb_convert8.06 0.53 0.05 1722390 0.00 0.00 jpeg_fill_bit_buffer8.06 0.58 0.05 1 50.00 50.00 finish_output_bmp3.23 0.60 0.02 2448 0.01 0.01 put_pixel_rows1.61 0.61 0.01 236866 0.00 0.00 jpeg_huff_decode1.61 0.62 0.01 4896 0.00 0.00 h2v1_fancy_upsample0.00 0.62 0.00 62424 0.00 0.00 jzero_far
huffman decode, idct, YCbCr-RGB変換が占める
13年9月1日日曜日
software処理でデータはどう流れる? (1)
IU,cache,MMU
13年9月1日日曜日
software処理でデータはどう流れる? (3)
cache miss とMMU13年9月1日日曜日
software処理でデータはどう流れる? (2)
cache miss とMMU13年9月1日日曜日
software処理でデータはどう流れる? (4)
framebuffer出力も同時動作memory controllerの入り口もかなり厳しい
13年9月1日日曜日
software処理でデータはどう流れる? (5)
memory controller入り口がボトルネックの場合は回避策を考える
13年9月1日日曜日
Agenda
introduction 1. 発表概要 & 予備知識main 2. JPEGアルゴリズム 3. softwareのみでmotionJPEG再生 4. 一部処理をhardware化 5. JPEG処理をhardware化 6. まとめ 7. エクストリームなおまけ
13年9月1日日曜日
以下の様な要素技術をマスター
・IPコア設計・AMBAバスの理解とインターフェース設計・デバイスドライバ開発 (この発表ではふれません)
13年9月1日日曜日
AMBA busにつながるIPコア
YCbCr-RGB
13年9月1日日曜日
YCbCr-RGB演算をハード化
hardwareは並行動作可能動作周波数を満たす限り直列接続可能
R = Y + 1.40200(Cr-128)G = Y -0.34414(Cb-128) - 0.71414(Cr-128)B = Y +1.77200(Cb-128)
13年9月1日日曜日
他にも考慮しないといけないものがある
BUS
13年9月1日日曜日
Busって何? (1)
いつキャッシュミスが起きるかはHardware設計時にも分からないし、アプリケーション開発時にも分からない
busにつながるコアにはマスタとスレーブの2種類ある
13年9月1日日曜日
Busって何? (2)
bus上にマスタは複数あって要求が出るタイミングは分からないので当然ぶつかる
13年9月1日日曜日
Busって何? (3)
アービタが交通整理をしている
13年9月1日日曜日
Busって何? (4)
どのようなタイミングで要求や応答が起きても正しく動くように構造やプロトコルを規定したもの
13年9月1日日曜日
YCbCr-RGBコア概要設計
processorから書き込まれるslave interfaceとSDRAM上のframe bufferに書き込むmaster interface
両方を持ちます
13年9月1日日曜日
YCbCr-RGBコア概要設計
processorから書き込まれるslave interfaceとSDRAM上のframe bufferに書き込むmaster interface
両方を持ちます
13年9月1日日曜日
実行すると
殆どfps変わらない!?
13年9月1日日曜日
CPU使用時間の変化
13年9月1日日曜日
データの流れ
huffman, DCTは同じ13年9月1日日曜日
データの流れ
YCbCr-RGB変換はハードこの時huffman, DCTが並行動作に注意
13年9月1日日曜日
データの流れ
RGB信号は出し続ける13年9月1日日曜日
データの流れ
13年9月1日日曜日
Agenda
introduction 1. 発表概要 & 予備知識main 2. JPEGアルゴリズム 3. softwareのみでmotionJPEG再生 4. 一部処理をhardware化 5. JPEG処理をhardware化 6. まとめ 7. エクストリームなおまけ
13年9月1日日曜日
huffman, dctもhardware化
FIFOやダブルバッファで接続ハンドシェークで連携
13年9月1日日曜日
再生!
ソフト処理より遥かに大きな画面サイズで動画再生
13年9月1日日曜日
fpsが上がる理由
13年9月1日日曜日
Agenda
introduction 1. 発表概要 & 予備知識main 2. JPEGアルゴリズム 3. softwareのみでmotionJPEG再生 4. 一部処理をhardware化 5. JPEG処理をhardware化 6. まとめ 7. エクストリームなおまけ
13年9月1日日曜日
まとめ(1)
13年9月1日日曜日
まとめ(2)
13年9月1日日曜日
Agenda
introduction 1. 発表概要 & 予備知識main 2. JPEGアルゴリズム 3. softwareのみでmotionJPEG再生 4. 一部処理をhardware化 5. JPEG処理をhardware化 6. まとめ 7. エクストリームなおまけ
13年9月1日日曜日
softwareに対するFPGAの優位性
・ハードウェア処理の方が圧倒的な低クロック数で処理可能
・バスボトルネックに対して対応したシステム構造を組める
13年9月1日日曜日
FPGA vs ASICpros 開発コスト・期間短い 少量の場合安価 動作時書き換え可能
cons 処理能力 ASIC >>> FPGA
消費電力大 大量の場合コストでASICに負ける
13年9月1日日曜日
以上のような条件の中でFPGAに合ったマーケットは?
IoT + (GIS) + stream processing
13年9月1日日曜日
例えば
13年9月1日日曜日
real-timestream
processingdatabase
rule化
・real-timeで大量のデータ入出力・rule自体が変化成長していく
13年9月1日日曜日
勉強会は懇親会が本番です
13年9月1日日曜日