栗元憲一
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. ...
自己紹介
SoC
カスタムデータパスハードマクロ
static timing analyzer
大学院で論理合成アルゴリズム研究
SoCの物理実装
不揮発メモリ開発
トランジスタばらつき測定システム
物理実装とCSを10年以上やってました。
1...
android + hardware
http://k2-garage.com
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. ...
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)
単なる色空間の変換演算です!
今日はここにF...
Agenda
introduction
1. 発表概要 & 予備知識
main
2. JPEGアルゴリズム
3. softwareのみでmotionJPEG再生
4. 一部処理をhardware化
5. JPEG処理をhardware化
6. ...
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...
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があります。
xilinx
altera
actel
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/ca...
software処理でデータはどう流れる? (1)
IU,cache,MMU
13年9月1日日曜日
software処理でデータはどう流れる? (3)
cache miss とMMU
13年9月1日日曜日
software処理でデータはどう流れる? (2)
cache miss とMMU
13年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. ...
以下の様な要素技術をマスター
・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 ...
他にも考慮しないといけないものがある
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. ...
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. ...
まとめ(1)
13年9月1日日曜日
まとめ(2)
13年9月1日日曜日
Agenda
introduction
1. 発表概要 & 予備知識
main
2. JPEGアルゴリズム
3. softwareのみでmotionJPEG再生
4. 一部処理をhardware化
5. JPEG処理をhardware化
6. ...
softwareに対するFPGAの優位性
・ハードウェア処理の方が圧倒的な低クロ
ック数で処理可能
・バスボトルネックに対して対応したシス
テム構造を組める
13年9月1日日曜日
FPGA vs ASIC
pros
 開発コスト・期間短い
 少量の場合安価
 動作時書き換え可能
cons
処理能力 ASIC >>> FPGA
消費電力大
大量の場合コストでASICに負ける
13年9月1日日曜日
以上のような条件の中でFPGAに合ったマーケットは?
IoT + (GIS) + stream processing
13年9月1日日曜日
例えば
13年9月1日日曜日
real-time
stream
processing
database
rule化
・real-timeで大量のデータ入出力
・rule自体が変化成長していく
13年9月1日日曜日
勉強会は懇親会が本番です
13年9月1日日曜日
Upcoming SlideShare
Loading in …5
×

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

3,257 views

Published on

0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,257
On SlideShare
0
From Embeds
0
Number of Embeds
1,938
Actions
Shares
0
Downloads
14
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

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

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

×