fpga エクストリーム・コンピューティング第3回
TRANSCRIPT
![Page 1: FPGA エクストリーム・コンピューティング第3回](https://reader033.vdocuments.site/reader033/viewer/2022051413/55844e7ed8b42adf748b4ae4/html5/thumbnails/1.jpg)
栗元憲一http://k2-garage.com
mjpeg stream viewer on FPGA
13年9月1日日曜日
![Page 2: FPGA エクストリーム・コンピューティング第3回](https://reader033.vdocuments.site/reader033/viewer/2022051413/55844e7ed8b42adf748b4ae4/html5/thumbnails/2.jpg)
Agenda
introduction 1. 発表概要 & 予備知識main 2. JPEGアルゴリズム 3. softwareのみでmotionJPEG再生 4. 一部処理をhardware化 5. JPEG処理をhardware化 6. まとめ 7. エクストリームなおまけ
13年9月1日日曜日
![Page 3: FPGA エクストリーム・コンピューティング第3回](https://reader033.vdocuments.site/reader033/viewer/2022051413/55844e7ed8b42adf748b4ae4/html5/thumbnails/3.jpg)
自己紹介
SoCカスタムデータパスハードマクロ
static timing analyzer大学院で論理合成アルゴリズム研究
SoCの物理実装不揮発メモリ開発
トランジスタばらつき測定システム
物理実装とCSを10年以上やってました。
13年9月1日日曜日
![Page 5: FPGA エクストリーム・コンピューティング第3回](https://reader033.vdocuments.site/reader033/viewer/2022051413/55844e7ed8b42adf748b4ae4/html5/thumbnails/5.jpg)
書籍出版しました
表テーマソフトウェア処理で重たい部分をハードウェア化して高速化する手法を学ぶ
実習書です。
対象読者
SoC開発のエッセンスを学びたい人
13年9月1日日曜日
![Page 6: FPGA エクストリーム・コンピューティング第3回](https://reader033.vdocuments.site/reader033/viewer/2022051413/55844e7ed8b42adf748b4ae4/html5/thumbnails/6.jpg)
概要
LAN上にあるサーバからmotionJPEGファイルをストリーミング。FPGA上のSoCで動画表示
このようなSoCを開発することでSoC開発のエッセンス(ソフト処理をハード処理にすることで高速化する)を学習します。
13年9月1日日曜日
![Page 7: FPGA エクストリーム・コンピューティング第3回](https://reader033.vdocuments.site/reader033/viewer/2022051413/55844e7ed8b42adf748b4ae4/html5/thumbnails/7.jpg)
こんな感じのSoCをFPGA上で動かします
13年9月1日日曜日
![Page 8: FPGA エクストリーム・コンピューティング第3回](https://reader033.vdocuments.site/reader033/viewer/2022051413/55844e7ed8b42adf748b4ae4/html5/thumbnails/8.jpg)
開発フロー
ソフトウェア処理をハードウェア処理に変更することでfpsが向上。ハードウェア処理が何故高速なのかを学習。
13年9月1日日曜日
![Page 9: FPGA エクストリーム・コンピューティング第3回](https://reader033.vdocuments.site/reader033/viewer/2022051413/55844e7ed8b42adf748b4ae4/html5/thumbnails/9.jpg)
予備知識: memory
SRAMDRAM
面積 小 大速度 遅 速製造 専用 標準logic
13年9月1日日曜日
![Page 10: FPGA エクストリーム・コンピューティング第3回](https://reader033.vdocuments.site/reader033/viewer/2022051413/55844e7ed8b42adf748b4ae4/html5/thumbnails/10.jpg)
予備知識: FPGA
FPGA内部構造前ページのHDLを全く別の方法で動作させます。
4~5入力のSRAMのメモリの中の値と接続を変更することで任意のlogicを実現
13年9月1日日曜日
![Page 11: FPGA エクストリーム・コンピューティング第3回](https://reader033.vdocuments.site/reader033/viewer/2022051413/55844e7ed8b42adf748b4ae4/html5/thumbnails/11.jpg)
Agenda
introduction 1. 発表概要 & 予備知識main 2. JPEGアルゴリズム 3. softwareのみでmotionJPEG再生 4. 一部処理をhardware化 5. JPEG処理をhardware化 6. まとめ 7. エクストリームなおまけ
13年9月1日日曜日
![Page 12: FPGA エクストリーム・コンピューティング第3回](https://reader033.vdocuments.site/reader033/viewer/2022051413/55844e7ed8b42adf748b4ae4/html5/thumbnails/12.jpg)
JPEG decode Algorithmの主な構造
huffman decode
量子化を戻す
2D-DCT変換
YCbCr-RGB変換
13年9月1日日曜日
![Page 13: FPGA エクストリーム・コンピューティング第3回](https://reader033.vdocuments.site/reader033/viewer/2022051413/55844e7ed8b42adf748b4ae4/html5/thumbnails/13.jpg)
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回](https://reader033.vdocuments.site/reader033/viewer/2022051413/55844e7ed8b42adf748b4ae4/html5/thumbnails/14.jpg)
Agenda
introduction 1. 発表概要 & 予備知識main 2. JPEGアルゴリズム 3. softwareのみでmotionJPEG再生 4. 一部処理をhardware化 5. JPEG処理をhardware化 6. まとめ 7. エクストリームなおまけ
13年9月1日日曜日
![Page 15: FPGA エクストリーム・コンピューティング第3回](https://reader033.vdocuments.site/reader033/viewer/2022051413/55844e7ed8b42adf748b4ae4/html5/thumbnails/15.jpg)
FPGA上にSoCを実現!
13年9月1日日曜日
![Page 16: FPGA エクストリーム・コンピューティング第3回](https://reader033.vdocuments.site/reader033/viewer/2022051413/55844e7ed8b42adf748b4ae4/html5/thumbnails/16.jpg)
開発するSoC
SPARC V8 CPU, AHB・APBバス, ethernet mac......
13年9月1日日曜日
![Page 17: FPGA エクストリーム・コンピューティング第3回](https://reader033.vdocuments.site/reader033/viewer/2022051413/55844e7ed8b42adf748b4ae4/html5/thumbnails/17.jpg)
最初にFPGA上にSoCをインプリLinuxをブートしてソフトウェアのみで
システムを動作させる。
13年9月1日日曜日
![Page 18: FPGA エクストリーム・コンピューティング第3回](https://reader033.vdocuments.site/reader033/viewer/2022051413/55844e7ed8b42adf748b4ae4/html5/thumbnails/18.jpg)
aeroflex gaisler社からGPLライセンスのSoCが公開されていて、前出の図からjpegモジュールを除いたSoCが40種類ぐらいのボードでmakeコマンド一つで実装できます。
この状態でrepositoryに含めてます
13年9月1日日曜日
![Page 19: FPGA エクストリーム・コンピューティング第3回](https://reader033.vdocuments.site/reader033/viewer/2022051413/55844e7ed8b42adf748b4ae4/html5/thumbnails/19.jpg)
linuxについてもconfigurationさえすれば動作するsnapgear-linuxが公開されてます。
この状態でrepositoryに含めてます
13年9月1日日曜日
![Page 20: FPGA エクストリーム・コンピューティング第3回](https://reader033.vdocuments.site/reader033/viewer/2022051413/55844e7ed8b42adf748b4ae4/html5/thumbnails/20.jpg)
jpegソフトウェアについては定評のあるIJG(International Jpeg Group)のjpeg library
を使用します。
linuxのユーザランドアプリのディレクトリとしてrepositoryに含めてます
13年9月1日日曜日
![Page 21: FPGA エクストリーム・コンピューティング第3回](https://reader033.vdocuments.site/reader033/viewer/2022051413/55844e7ed8b42adf748b4ae4/html5/thumbnails/21.jpg)
softもhardもgitで管理
sourceforgeの MJPEG-LEON-FPGA にrepositoryがあります。
xilinxalteraactel
ASICでも!動作します
13年9月1日日曜日
![Page 22: FPGA エクストリーム・コンピューティング第3回](https://reader033.vdocuments.site/reader033/viewer/2022051413/55844e7ed8b42adf748b4ae4/html5/thumbnails/22.jpg)
Boot!
とりあえず、フレームバッファにコンソール出力するとこうなります。以降はコンソールはUART。
13年9月1日日曜日
![Page 23: FPGA エクストリーム・コンピューティング第3回](https://reader033.vdocuments.site/reader033/viewer/2022051413/55844e7ed8b42adf748b4ae4/html5/thumbnails/23.jpg)
IJG付属のjpeg表示ソフトを少し変更するとmotionJPEG表示できます。
遅い!!!!!! (こんなに小さな画面でもカクカク)
(ちなみに動作周波数40MHz)13年9月1日日曜日
![Page 24: FPGA エクストリーム・コンピューティング第3回](https://reader033.vdocuments.site/reader033/viewer/2022051413/55844e7ed8b42adf748b4ae4/html5/thumbnails/24.jpg)
ちなみにVGAサイズだと、、、
13年9月1日日曜日
![Page 25: FPGA エクストリーム・コンピューティング第3回](https://reader033.vdocuments.site/reader033/viewer/2022051413/55844e7ed8b42adf748b4ae4/html5/thumbnails/25.jpg)
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回](https://reader033.vdocuments.site/reader033/viewer/2022051413/55844e7ed8b42adf748b4ae4/html5/thumbnails/26.jpg)
software処理でデータはどう流れる? (1)
IU,cache,MMU
13年9月1日日曜日
![Page 27: FPGA エクストリーム・コンピューティング第3回](https://reader033.vdocuments.site/reader033/viewer/2022051413/55844e7ed8b42adf748b4ae4/html5/thumbnails/27.jpg)
software処理でデータはどう流れる? (3)
cache miss とMMU13年9月1日日曜日
![Page 28: FPGA エクストリーム・コンピューティング第3回](https://reader033.vdocuments.site/reader033/viewer/2022051413/55844e7ed8b42adf748b4ae4/html5/thumbnails/28.jpg)
software処理でデータはどう流れる? (2)
cache miss とMMU13年9月1日日曜日
![Page 29: FPGA エクストリーム・コンピューティング第3回](https://reader033.vdocuments.site/reader033/viewer/2022051413/55844e7ed8b42adf748b4ae4/html5/thumbnails/29.jpg)
software処理でデータはどう流れる? (4)
framebuffer出力も同時動作memory controllerの入り口もかなり厳しい
13年9月1日日曜日
![Page 30: FPGA エクストリーム・コンピューティング第3回](https://reader033.vdocuments.site/reader033/viewer/2022051413/55844e7ed8b42adf748b4ae4/html5/thumbnails/30.jpg)
software処理でデータはどう流れる? (5)
memory controller入り口がボトルネックの場合は回避策を考える
13年9月1日日曜日
![Page 31: FPGA エクストリーム・コンピューティング第3回](https://reader033.vdocuments.site/reader033/viewer/2022051413/55844e7ed8b42adf748b4ae4/html5/thumbnails/31.jpg)
Agenda
introduction 1. 発表概要 & 予備知識main 2. JPEGアルゴリズム 3. softwareのみでmotionJPEG再生 4. 一部処理をhardware化 5. JPEG処理をhardware化 6. まとめ 7. エクストリームなおまけ
13年9月1日日曜日
![Page 32: FPGA エクストリーム・コンピューティング第3回](https://reader033.vdocuments.site/reader033/viewer/2022051413/55844e7ed8b42adf748b4ae4/html5/thumbnails/32.jpg)
以下の様な要素技術をマスター
・IPコア設計・AMBAバスの理解とインターフェース設計・デバイスドライバ開発 (この発表ではふれません)
13年9月1日日曜日
![Page 33: FPGA エクストリーム・コンピューティング第3回](https://reader033.vdocuments.site/reader033/viewer/2022051413/55844e7ed8b42adf748b4ae4/html5/thumbnails/33.jpg)
AMBA busにつながるIPコア
YCbCr-RGB
13年9月1日日曜日
![Page 34: FPGA エクストリーム・コンピューティング第3回](https://reader033.vdocuments.site/reader033/viewer/2022051413/55844e7ed8b42adf748b4ae4/html5/thumbnails/34.jpg)
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回](https://reader033.vdocuments.site/reader033/viewer/2022051413/55844e7ed8b42adf748b4ae4/html5/thumbnails/35.jpg)
他にも考慮しないといけないものがある
BUS
13年9月1日日曜日
![Page 36: FPGA エクストリーム・コンピューティング第3回](https://reader033.vdocuments.site/reader033/viewer/2022051413/55844e7ed8b42adf748b4ae4/html5/thumbnails/36.jpg)
Busって何? (1)
いつキャッシュミスが起きるかはHardware設計時にも分からないし、アプリケーション開発時にも分からない
busにつながるコアにはマスタとスレーブの2種類ある
13年9月1日日曜日
![Page 37: FPGA エクストリーム・コンピューティング第3回](https://reader033.vdocuments.site/reader033/viewer/2022051413/55844e7ed8b42adf748b4ae4/html5/thumbnails/37.jpg)
Busって何? (2)
bus上にマスタは複数あって要求が出るタイミングは分からないので当然ぶつかる
13年9月1日日曜日
![Page 38: FPGA エクストリーム・コンピューティング第3回](https://reader033.vdocuments.site/reader033/viewer/2022051413/55844e7ed8b42adf748b4ae4/html5/thumbnails/38.jpg)
Busって何? (3)
アービタが交通整理をしている
13年9月1日日曜日
![Page 39: FPGA エクストリーム・コンピューティング第3回](https://reader033.vdocuments.site/reader033/viewer/2022051413/55844e7ed8b42adf748b4ae4/html5/thumbnails/39.jpg)
Busって何? (4)
どのようなタイミングで要求や応答が起きても正しく動くように構造やプロトコルを規定したもの
13年9月1日日曜日
![Page 40: FPGA エクストリーム・コンピューティング第3回](https://reader033.vdocuments.site/reader033/viewer/2022051413/55844e7ed8b42adf748b4ae4/html5/thumbnails/40.jpg)
YCbCr-RGBコア概要設計
processorから書き込まれるslave interfaceとSDRAM上のframe bufferに書き込むmaster interface
両方を持ちます
13年9月1日日曜日
![Page 41: FPGA エクストリーム・コンピューティング第3回](https://reader033.vdocuments.site/reader033/viewer/2022051413/55844e7ed8b42adf748b4ae4/html5/thumbnails/41.jpg)
YCbCr-RGBコア概要設計
processorから書き込まれるslave interfaceとSDRAM上のframe bufferに書き込むmaster interface
両方を持ちます
13年9月1日日曜日
![Page 42: FPGA エクストリーム・コンピューティング第3回](https://reader033.vdocuments.site/reader033/viewer/2022051413/55844e7ed8b42adf748b4ae4/html5/thumbnails/42.jpg)
実行すると
殆どfps変わらない!?
13年9月1日日曜日
![Page 43: FPGA エクストリーム・コンピューティング第3回](https://reader033.vdocuments.site/reader033/viewer/2022051413/55844e7ed8b42adf748b4ae4/html5/thumbnails/43.jpg)
CPU使用時間の変化
13年9月1日日曜日
![Page 44: FPGA エクストリーム・コンピューティング第3回](https://reader033.vdocuments.site/reader033/viewer/2022051413/55844e7ed8b42adf748b4ae4/html5/thumbnails/44.jpg)
データの流れ
huffman, DCTは同じ13年9月1日日曜日
![Page 45: FPGA エクストリーム・コンピューティング第3回](https://reader033.vdocuments.site/reader033/viewer/2022051413/55844e7ed8b42adf748b4ae4/html5/thumbnails/45.jpg)
データの流れ
YCbCr-RGB変換はハードこの時huffman, DCTが並行動作に注意
13年9月1日日曜日
![Page 46: FPGA エクストリーム・コンピューティング第3回](https://reader033.vdocuments.site/reader033/viewer/2022051413/55844e7ed8b42adf748b4ae4/html5/thumbnails/46.jpg)
データの流れ
RGB信号は出し続ける13年9月1日日曜日
![Page 47: FPGA エクストリーム・コンピューティング第3回](https://reader033.vdocuments.site/reader033/viewer/2022051413/55844e7ed8b42adf748b4ae4/html5/thumbnails/47.jpg)
データの流れ
13年9月1日日曜日
![Page 48: FPGA エクストリーム・コンピューティング第3回](https://reader033.vdocuments.site/reader033/viewer/2022051413/55844e7ed8b42adf748b4ae4/html5/thumbnails/48.jpg)
Agenda
introduction 1. 発表概要 & 予備知識main 2. JPEGアルゴリズム 3. softwareのみでmotionJPEG再生 4. 一部処理をhardware化 5. JPEG処理をhardware化 6. まとめ 7. エクストリームなおまけ
13年9月1日日曜日
![Page 49: FPGA エクストリーム・コンピューティング第3回](https://reader033.vdocuments.site/reader033/viewer/2022051413/55844e7ed8b42adf748b4ae4/html5/thumbnails/49.jpg)
huffman, dctもhardware化
FIFOやダブルバッファで接続ハンドシェークで連携
13年9月1日日曜日
![Page 50: FPGA エクストリーム・コンピューティング第3回](https://reader033.vdocuments.site/reader033/viewer/2022051413/55844e7ed8b42adf748b4ae4/html5/thumbnails/50.jpg)
再生!
ソフト処理より遥かに大きな画面サイズで動画再生
13年9月1日日曜日
![Page 51: FPGA エクストリーム・コンピューティング第3回](https://reader033.vdocuments.site/reader033/viewer/2022051413/55844e7ed8b42adf748b4ae4/html5/thumbnails/51.jpg)
fpsが上がる理由
13年9月1日日曜日
![Page 52: FPGA エクストリーム・コンピューティング第3回](https://reader033.vdocuments.site/reader033/viewer/2022051413/55844e7ed8b42adf748b4ae4/html5/thumbnails/52.jpg)
Agenda
introduction 1. 発表概要 & 予備知識main 2. JPEGアルゴリズム 3. softwareのみでmotionJPEG再生 4. 一部処理をhardware化 5. JPEG処理をhardware化 6. まとめ 7. エクストリームなおまけ
13年9月1日日曜日
![Page 53: FPGA エクストリーム・コンピューティング第3回](https://reader033.vdocuments.site/reader033/viewer/2022051413/55844e7ed8b42adf748b4ae4/html5/thumbnails/53.jpg)
まとめ(1)
13年9月1日日曜日
![Page 54: FPGA エクストリーム・コンピューティング第3回](https://reader033.vdocuments.site/reader033/viewer/2022051413/55844e7ed8b42adf748b4ae4/html5/thumbnails/54.jpg)
まとめ(2)
13年9月1日日曜日
![Page 55: FPGA エクストリーム・コンピューティング第3回](https://reader033.vdocuments.site/reader033/viewer/2022051413/55844e7ed8b42adf748b4ae4/html5/thumbnails/55.jpg)
Agenda
introduction 1. 発表概要 & 予備知識main 2. JPEGアルゴリズム 3. softwareのみでmotionJPEG再生 4. 一部処理をhardware化 5. JPEG処理をhardware化 6. まとめ 7. エクストリームなおまけ
13年9月1日日曜日
![Page 56: FPGA エクストリーム・コンピューティング第3回](https://reader033.vdocuments.site/reader033/viewer/2022051413/55844e7ed8b42adf748b4ae4/html5/thumbnails/56.jpg)
softwareに対するFPGAの優位性
・ハードウェア処理の方が圧倒的な低クロック数で処理可能
・バスボトルネックに対して対応したシステム構造を組める
13年9月1日日曜日
![Page 57: FPGA エクストリーム・コンピューティング第3回](https://reader033.vdocuments.site/reader033/viewer/2022051413/55844e7ed8b42adf748b4ae4/html5/thumbnails/57.jpg)
FPGA vs ASICpros 開発コスト・期間短い 少量の場合安価 動作時書き換え可能
cons 処理能力 ASIC >>> FPGA
消費電力大 大量の場合コストでASICに負ける
13年9月1日日曜日
![Page 58: FPGA エクストリーム・コンピューティング第3回](https://reader033.vdocuments.site/reader033/viewer/2022051413/55844e7ed8b42adf748b4ae4/html5/thumbnails/58.jpg)
以上のような条件の中でFPGAに合ったマーケットは?
IoT + (GIS) + stream processing
13年9月1日日曜日
![Page 59: FPGA エクストリーム・コンピューティング第3回](https://reader033.vdocuments.site/reader033/viewer/2022051413/55844e7ed8b42adf748b4ae4/html5/thumbnails/59.jpg)
例えば
13年9月1日日曜日
![Page 60: FPGA エクストリーム・コンピューティング第3回](https://reader033.vdocuments.site/reader033/viewer/2022051413/55844e7ed8b42adf748b4ae4/html5/thumbnails/60.jpg)
real-timestream
processingdatabase
rule化
・real-timeで大量のデータ入出力・rule自体が変化成長していく
13年9月1日日曜日
![Page 61: FPGA エクストリーム・コンピューティング第3回](https://reader033.vdocuments.site/reader033/viewer/2022051413/55844e7ed8b42adf748b4ae4/html5/thumbnails/61.jpg)
勉強会は懇親会が本番です
13年9月1日日曜日