SlideShare une entreprise Scribd logo
1  sur  61
Télécharger pour lire hors ligne
栗元憲一
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日日曜日
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. まとめ
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があります。
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/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日日曜日
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. まとめ
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 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日日曜日

Contenu connexe

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

20220525_kobayashi.pdf
20220525_kobayashi.pdf20220525_kobayashi.pdf
20220525_kobayashi.pdf直久 住川
 
20190925_DBTS_PGStrom
20190925_DBTS_PGStrom20190925_DBTS_PGStrom
20190925_DBTS_PGStromKohei KaiGai
 
iMulvery -Mulveryの新機能のご紹介-
iMulvery -Mulveryの新機能のご紹介-iMulvery -Mulveryの新機能のご紹介-
iMulvery -Mulveryの新機能のご紹介-Daichi Teruya
 
(JP) GPGPUがPostgreSQLを加速する
(JP) GPGPUがPostgreSQLを加速する(JP) GPGPUがPostgreSQLを加速する
(JP) GPGPUがPostgreSQLを加速するKohei KaiGai
 
2015年度GPGPU実践基礎工学 第4回 CPUのアーキテクチャ
2015年度GPGPU実践基礎工学 第4回 CPUのアーキテクチャ2015年度GPGPU実践基礎工学 第4回 CPUのアーキテクチャ
2015年度GPGPU実践基礎工学 第4回 CPUのアーキテクチャ智啓 出川
 
Unityとスマートフォンアプリの最適化
Unityとスマートフォンアプリの最適化Unityとスマートフォンアプリの最適化
Unityとスマートフォンアプリの最適化COLOPL, Inc.
 
チームMORIMORI 設計資料他苦労話など at G空間EXPO2013
チームMORIMORI 設計資料他苦労話など at G空間EXPO2013チームMORIMORI 設計資料他苦労話など at G空間EXPO2013
チームMORIMORI 設計資料他苦労話など at G空間EXPO2013Katsuhiro Morishita
 
ZytleBot:ROS対応自動走行ロボットへのFPGA活用を加速化する統合開発プラットフォーム
ZytleBot:ROS対応自動走行ロボットへのFPGA活用を加速化する統合開発プラットフォームZytleBot:ROS対応自動走行ロボットへのFPGA活用を加速化する統合開発プラットフォーム
ZytleBot:ROS対応自動走行ロボットへのFPGA活用を加速化する統合開発プラットフォームHideki Takase
 
FPGA, AI, エッジコンピューティング
FPGA, AI, エッジコンピューティングFPGA, AI, エッジコンピューティング
FPGA, AI, エッジコンピューティングHideo Terada
 
【未発表】Backbone.jsとJavaEE7でWebアプリを作ろう!(第1回) 〜GETで一覧編〜
【未発表】Backbone.jsとJavaEE7でWebアプリを作ろう!(第1回) 〜GETで一覧編〜【未発表】Backbone.jsとJavaEE7でWebアプリを作ろう!(第1回) 〜GETで一覧編〜
【未発表】Backbone.jsとJavaEE7でWebアプリを作ろう!(第1回) 〜GETで一覧編〜Toshio Ehara
 
Serviceability Toolsの裏側
Serviceability Toolsの裏側Serviceability Toolsの裏側
Serviceability Toolsの裏側Yasumasa Suenaga
 
Aerospike v3 install
Aerospike v3 installAerospike v3 install
Aerospike v3 installMakoto Uehara
 
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...エピック・ゲームズ・ジャパン Epic Games Japan
 
ICSをビルドしてみた
ICSをビルドしてみたICSをビルドしてみた
ICSをビルドしてみたkinneko
 
PHP matsuri 2013 Windows Azure Storage SDK for PHP
PHP matsuri 2013 Windows Azure Storage SDK for PHPPHP matsuri 2013 Windows Azure Storage SDK for PHP
PHP matsuri 2013 Windows Azure Storage SDK for PHPTakeshi Sakurai
 
S3 を単純ストレージとして 利用する手段の比較
S3 を単純ストレージとして 利用する手段の比較S3 を単純ストレージとして 利用する手段の比較
S3 を単純ストレージとして 利用する手段の比較真治 米田
 

Similaire à FPGA エクストリーム・コンピューティング第3回 (20)

20220525_kobayashi.pdf
20220525_kobayashi.pdf20220525_kobayashi.pdf
20220525_kobayashi.pdf
 
JTAG入門
JTAG入門JTAG入門
JTAG入門
 
20190925_DBTS_PGStrom
20190925_DBTS_PGStrom20190925_DBTS_PGStrom
20190925_DBTS_PGStrom
 
iMulvery -Mulveryの新機能のご紹介-
iMulvery -Mulveryの新機能のご紹介-iMulvery -Mulveryの新機能のご紹介-
iMulvery -Mulveryの新機能のご紹介-
 
(JP) GPGPUがPostgreSQLを加速する
(JP) GPGPUがPostgreSQLを加速する(JP) GPGPUがPostgreSQLを加速する
(JP) GPGPUがPostgreSQLを加速する
 
2015年度GPGPU実践基礎工学 第4回 CPUのアーキテクチャ
2015年度GPGPU実践基礎工学 第4回 CPUのアーキテクチャ2015年度GPGPU実践基礎工学 第4回 CPUのアーキテクチャ
2015年度GPGPU実践基礎工学 第4回 CPUのアーキテクチャ
 
Unityとスマートフォンアプリの最適化
Unityとスマートフォンアプリの最適化Unityとスマートフォンアプリの最適化
Unityとスマートフォンアプリの最適化
 
チームMORIMORI 設計資料他苦労話など at G空間EXPO2013
チームMORIMORI 設計資料他苦労話など at G空間EXPO2013チームMORIMORI 設計資料他苦労話など at G空間EXPO2013
チームMORIMORI 設計資料他苦労話など at G空間EXPO2013
 
ZytleBot:ROS対応自動走行ロボットへのFPGA活用を加速化する統合開発プラットフォーム
ZytleBot:ROS対応自動走行ロボットへのFPGA活用を加速化する統合開発プラットフォームZytleBot:ROS対応自動走行ロボットへのFPGA活用を加速化する統合開発プラットフォーム
ZytleBot:ROS対応自動走行ロボットへのFPGA活用を加速化する統合開発プラットフォーム
 
10大ニュースで振り返るpg con2013
10大ニュースで振り返るpg con201310大ニュースで振り返るpg con2013
10大ニュースで振り返るpg con2013
 
FPGA, AI, エッジコンピューティング
FPGA, AI, エッジコンピューティングFPGA, AI, エッジコンピューティング
FPGA, AI, エッジコンピューティング
 
【未発表】Backbone.jsとJavaEE7でWebアプリを作ろう!(第1回) 〜GETで一覧編〜
【未発表】Backbone.jsとJavaEE7でWebアプリを作ろう!(第1回) 〜GETで一覧編〜【未発表】Backbone.jsとJavaEE7でWebアプリを作ろう!(第1回) 〜GETで一覧編〜
【未発表】Backbone.jsとJavaEE7でWebアプリを作ろう!(第1回) 〜GETで一覧編〜
 
Serviceability Toolsの裏側
Serviceability Toolsの裏側Serviceability Toolsの裏側
Serviceability Toolsの裏側
 
Aerospike v3 install
Aerospike v3 installAerospike v3 install
Aerospike v3 install
 
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
 
ICSをビルドしてみた
ICSをビルドしてみたICSをビルドしてみた
ICSをビルドしてみた
 
PHP matsuri 2013 Windows Azure Storage SDK for PHP
PHP matsuri 2013 Windows Azure Storage SDK for PHPPHP matsuri 2013 Windows Azure Storage SDK for PHP
PHP matsuri 2013 Windows Azure Storage SDK for PHP
 
Isca13 study
Isca13 studyIsca13 study
Isca13 study
 
S3 を単純ストレージとして 利用する手段の比較
S3 を単純ストレージとして 利用する手段の比較S3 を単純ストレージとして 利用する手段の比較
S3 を単純ストレージとして 利用する手段の比較
 
Java frameworkの昔と今
Java frameworkの昔と今Java frameworkの昔と今
Java frameworkの昔と今
 

Plus de Kenichi Kurimoto

Blockchain - Future Sync Vol5 Slide
Blockchain   -   Future Sync Vol5 SlideBlockchain   -   Future Sync Vol5 Slide
Blockchain - Future Sync Vol5 SlideKenichi Kurimoto
 
Earthquake visualization - ABC2012 Tohuku
Earthquake visualization - ABC2012 TohukuEarthquake visualization - ABC2012 Tohuku
Earthquake visualization - ABC2012 TohukuKenichi Kurimoto
 
Abc2012spring robot sammit - Kurimoto
Abc2012spring robot sammit - KurimotoAbc2012spring robot sammit - Kurimoto
Abc2012spring robot sammit - KurimotoKenichi Kurimoto
 

Plus de Kenichi Kurimoto (6)

Blockchain - Future Sync Vol5 Slide
Blockchain   -   Future Sync Vol5 SlideBlockchain   -   Future Sync Vol5 Slide
Blockchain - Future Sync Vol5 Slide
 
Smart property
Smart propertySmart property
Smart property
 
Ethereum whitepaper
Ethereum whitepaperEthereum whitepaper
Ethereum whitepaper
 
Earthquake visualization - ABC2012 Tohuku
Earthquake visualization - ABC2012 TohukuEarthquake visualization - ABC2012 Tohuku
Earthquake visualization - ABC2012 Tohuku
 
Abc2012spring robot sammit - Kurimoto
Abc2012spring robot sammit - KurimotoAbc2012spring robot sammit - Kurimoto
Abc2012spring robot sammit - Kurimoto
 
Abc2012spring slide
Abc2012spring slideAbc2012spring slide
Abc2012spring slide
 

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