FPGA エクストリーム・コンピューティング第3回

61
栗元憲一 http://k2-garage.com mjpeg stream viewer on FPGA 1391日日曜日

Transcript of FPGA エクストリーム・コンピューティング第3回

Page 1: FPGA エクストリーム・コンピューティング第3回

栗元憲一http://k2-garage.com

mjpeg stream viewer on FPGA

13年9月1日日曜日

Page 2: FPGA エクストリーム・コンピューティング第3回

Agenda

introduction 1. 発表概要 & 予備知識main 2. JPEGアルゴリズム 3. softwareのみでmotionJPEG再生 4. 一部処理をhardware化 5. JPEG処理をhardware化 6. まとめ 7. エクストリームなおまけ

13年9月1日日曜日

Page 3: FPGA エクストリーム・コンピューティング第3回

自己紹介

SoCカスタムデータパスハードマクロ

static timing analyzer大学院で論理合成アルゴリズム研究

SoCの物理実装不揮発メモリ開発

トランジスタばらつき測定システム

物理実装とCSを10年以上やってました。

13年9月1日日曜日

Page 4: FPGA エクストリーム・コンピューティング第3回

android + hardware

http://k2-garage.com

13年9月1日日曜日

Page 5: FPGA エクストリーム・コンピューティング第3回

書籍出版しました

表テーマソフトウェア処理で重たい部分をハードウェア化して高速化する手法を学ぶ

実習書です。

対象読者

SoC開発のエッセンスを学びたい人

13年9月1日日曜日

Page 6: FPGA エクストリーム・コンピューティング第3回

概要

LAN上にあるサーバからmotionJPEGファイルをストリーミング。FPGA上のSoCで動画表示

このようなSoCを開発することでSoC開発のエッセンス(ソフト処理をハード処理にすることで高速化する)を学習します。

13年9月1日日曜日

Page 7: FPGA エクストリーム・コンピューティング第3回

こんな感じのSoCをFPGA上で動かします

13年9月1日日曜日

Page 8: FPGA エクストリーム・コンピューティング第3回

開発フロー

ソフトウェア処理をハードウェア処理に変更することでfpsが向上。ハードウェア処理が何故高速なのかを学習。

13年9月1日日曜日

Page 9: FPGA エクストリーム・コンピューティング第3回

予備知識: memory

SRAMDRAM

面積   小       大速度   遅       速製造   専用 標準logic

13年9月1日日曜日

Page 10: FPGA エクストリーム・コンピューティング第3回

予備知識: FPGA

FPGA内部構造前ページのHDLを全く別の方法で動作させます。

4~5入力のSRAMのメモリの中の値と接続を変更することで任意のlogicを実現

13年9月1日日曜日

Page 11: FPGA エクストリーム・コンピューティング第3回

Agenda

introduction 1. 発表概要 & 予備知識main 2. JPEGアルゴリズム 3. softwareのみでmotionJPEG再生 4. 一部処理をhardware化 5. JPEG処理をhardware化 6. まとめ 7. エクストリームなおまけ

13年9月1日日曜日

Page 12: FPGA エクストリーム・コンピューティング第3回

JPEG decode Algorithmの主な構造

huffman decode

量子化を戻す

2D-DCT変換

YCbCr-RGB変換

13年9月1日日曜日

Page 13: FPGA エクストリーム・コンピューティング第3回

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日日曜日

Page 14: FPGA エクストリーム・コンピューティング第3回

Agenda

introduction 1. 発表概要 & 予備知識main 2. JPEGアルゴリズム 3. softwareのみでmotionJPEG再生 4. 一部処理をhardware化 5. JPEG処理をhardware化 6. まとめ 7. エクストリームなおまけ

13年9月1日日曜日

Page 15: FPGA エクストリーム・コンピューティング第3回

FPGA上にSoCを実現!

13年9月1日日曜日

Page 16: FPGA エクストリーム・コンピューティング第3回

開発するSoC

SPARC V8 CPU, AHB・APBバス, ethernet mac......

13年9月1日日曜日

Page 17: FPGA エクストリーム・コンピューティング第3回

最初にFPGA上にSoCをインプリLinuxをブートしてソフトウェアのみで

システムを動作させる。

13年9月1日日曜日

Page 18: FPGA エクストリーム・コンピューティング第3回

aeroflex gaisler社からGPLライセンスのSoCが公開されていて、前出の図からjpegモジュールを除いたSoCが40種類ぐらいのボードでmakeコマンド一つで実装できます。

この状態でrepositoryに含めてます

13年9月1日日曜日

Page 19: FPGA エクストリーム・コンピューティング第3回

linuxについてもconfigurationさえすれば動作するsnapgear-linuxが公開されてます。

この状態でrepositoryに含めてます

13年9月1日日曜日

Page 20: FPGA エクストリーム・コンピューティング第3回

jpegソフトウェアについては定評のあるIJG(International Jpeg Group)のjpeg library

を使用します。

linuxのユーザランドアプリのディレクトリとしてrepositoryに含めてます

13年9月1日日曜日

Page 21: FPGA エクストリーム・コンピューティング第3回

softもhardもgitで管理

sourceforgeの MJPEG-LEON-FPGA にrepositoryがあります。

xilinxalteraactel

ASICでも!動作します

13年9月1日日曜日

Page 22: FPGA エクストリーム・コンピューティング第3回

Boot!

とりあえず、フレームバッファにコンソール出力するとこうなります。以降はコンソールはUART。

13年9月1日日曜日

Page 23: FPGA エクストリーム・コンピューティング第3回

IJG付属のjpeg表示ソフトを少し変更するとmotionJPEG表示できます。

遅い!!!!!! (こんなに小さな画面でもカクカク)

(ちなみに動作周波数40MHz)13年9月1日日曜日

Page 24: FPGA エクストリーム・コンピューティング第3回

ちなみにVGAサイズだと、、、

13年9月1日日曜日

Page 25: FPGA エクストリーム・コンピューティング第3回

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日日曜日

Page 26: FPGA エクストリーム・コンピューティング第3回

software処理でデータはどう流れる? (1)

IU,cache,MMU

13年9月1日日曜日

Page 27: FPGA エクストリーム・コンピューティング第3回

software処理でデータはどう流れる? (3)

cache miss とMMU13年9月1日日曜日

Page 28: FPGA エクストリーム・コンピューティング第3回

software処理でデータはどう流れる? (2)

cache miss とMMU13年9月1日日曜日

Page 29: FPGA エクストリーム・コンピューティング第3回

software処理でデータはどう流れる? (4)

framebuffer出力も同時動作memory controllerの入り口もかなり厳しい

13年9月1日日曜日

Page 30: FPGA エクストリーム・コンピューティング第3回

software処理でデータはどう流れる? (5)

memory controller入り口がボトルネックの場合は回避策を考える

13年9月1日日曜日

Page 31: FPGA エクストリーム・コンピューティング第3回

Agenda

introduction 1. 発表概要 & 予備知識main 2. JPEGアルゴリズム 3. softwareのみでmotionJPEG再生 4. 一部処理をhardware化 5. JPEG処理をhardware化 6. まとめ 7. エクストリームなおまけ

13年9月1日日曜日

Page 32: FPGA エクストリーム・コンピューティング第3回

以下の様な要素技術をマスター

・IPコア設計・AMBAバスの理解とインターフェース設計・デバイスドライバ開発 (この発表ではふれません)

13年9月1日日曜日

Page 33: FPGA エクストリーム・コンピューティング第3回

AMBA busにつながるIPコア

YCbCr-RGB

13年9月1日日曜日

Page 34: FPGA エクストリーム・コンピューティング第3回

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日日曜日

Page 35: FPGA エクストリーム・コンピューティング第3回

他にも考慮しないといけないものがある

BUS

13年9月1日日曜日

Page 36: FPGA エクストリーム・コンピューティング第3回

Busって何? (1)

いつキャッシュミスが起きるかはHardware設計時にも分からないし、アプリケーション開発時にも分からない

busにつながるコアにはマスタとスレーブの2種類ある

13年9月1日日曜日

Page 37: FPGA エクストリーム・コンピューティング第3回

Busって何? (2)

bus上にマスタは複数あって要求が出るタイミングは分からないので当然ぶつかる

13年9月1日日曜日

Page 38: FPGA エクストリーム・コンピューティング第3回

Busって何? (3)

アービタが交通整理をしている

13年9月1日日曜日

Page 39: FPGA エクストリーム・コンピューティング第3回

Busって何? (4)

どのようなタイミングで要求や応答が起きても正しく動くように構造やプロトコルを規定したもの

13年9月1日日曜日

Page 40: FPGA エクストリーム・コンピューティング第3回

YCbCr-RGBコア概要設計

processorから書き込まれるslave interfaceとSDRAM上のframe bufferに書き込むmaster interface

両方を持ちます

13年9月1日日曜日

Page 41: FPGA エクストリーム・コンピューティング第3回

YCbCr-RGBコア概要設計

processorから書き込まれるslave interfaceとSDRAM上のframe bufferに書き込むmaster interface

両方を持ちます

13年9月1日日曜日

Page 42: FPGA エクストリーム・コンピューティング第3回

実行すると

殆どfps変わらない!?

13年9月1日日曜日

Page 43: FPGA エクストリーム・コンピューティング第3回

CPU使用時間の変化

13年9月1日日曜日

Page 44: FPGA エクストリーム・コンピューティング第3回

データの流れ

huffman, DCTは同じ13年9月1日日曜日

Page 45: FPGA エクストリーム・コンピューティング第3回

データの流れ

YCbCr-RGB変換はハードこの時huffman, DCTが並行動作に注意

13年9月1日日曜日

Page 46: FPGA エクストリーム・コンピューティング第3回

データの流れ

RGB信号は出し続ける13年9月1日日曜日

Page 47: FPGA エクストリーム・コンピューティング第3回

データの流れ

13年9月1日日曜日

Page 48: FPGA エクストリーム・コンピューティング第3回

Agenda

introduction 1. 発表概要 & 予備知識main 2. JPEGアルゴリズム 3. softwareのみでmotionJPEG再生 4. 一部処理をhardware化 5. JPEG処理をhardware化 6. まとめ 7. エクストリームなおまけ

13年9月1日日曜日

Page 49: FPGA エクストリーム・コンピューティング第3回

huffman, dctもhardware化

FIFOやダブルバッファで接続ハンドシェークで連携

13年9月1日日曜日

Page 50: FPGA エクストリーム・コンピューティング第3回

再生!

ソフト処理より遥かに大きな画面サイズで動画再生

13年9月1日日曜日

Page 51: FPGA エクストリーム・コンピューティング第3回

fpsが上がる理由

13年9月1日日曜日

Page 52: FPGA エクストリーム・コンピューティング第3回

Agenda

introduction 1. 発表概要 & 予備知識main 2. JPEGアルゴリズム 3. softwareのみでmotionJPEG再生 4. 一部処理をhardware化 5. JPEG処理をhardware化 6. まとめ 7. エクストリームなおまけ

13年9月1日日曜日

Page 53: FPGA エクストリーム・コンピューティング第3回

まとめ(1)

13年9月1日日曜日

Page 54: FPGA エクストリーム・コンピューティング第3回

まとめ(2)

13年9月1日日曜日

Page 55: FPGA エクストリーム・コンピューティング第3回

Agenda

introduction 1. 発表概要 & 予備知識main 2. JPEGアルゴリズム 3. softwareのみでmotionJPEG再生 4. 一部処理をhardware化 5. JPEG処理をhardware化 6. まとめ 7. エクストリームなおまけ

13年9月1日日曜日

Page 56: FPGA エクストリーム・コンピューティング第3回

softwareに対するFPGAの優位性

・ハードウェア処理の方が圧倒的な低クロック数で処理可能

・バスボトルネックに対して対応したシステム構造を組める

13年9月1日日曜日

Page 57: FPGA エクストリーム・コンピューティング第3回

FPGA vs ASICpros 開発コスト・期間短い 少量の場合安価 動作時書き換え可能

cons 処理能力 ASIC >>> FPGA

消費電力大 大量の場合コストでASICに負ける

13年9月1日日曜日

Page 58: FPGA エクストリーム・コンピューティング第3回

以上のような条件の中でFPGAに合ったマーケットは?

IoT + (GIS) + stream processing

13年9月1日日曜日

Page 59: FPGA エクストリーム・コンピューティング第3回

例えば

13年9月1日日曜日

Page 60: FPGA エクストリーム・コンピューティング第3回

real-timestream

processingdatabase

rule化

・real-timeで大量のデータ入出力・rule自体が変化成長していく

13年9月1日日曜日

Page 61: FPGA エクストリーム・コンピューティング第3回

勉強会は懇親会が本番です

13年9月1日日曜日