SlideShare a Scribd company logo
1 of 58
Download to read offline
FPGA上でのオープンソースSoC
(System on Chip)の構築
栗元憲一
http:/
/k2-garage.com

13年10月21日月曜日
Agenda
introduction
1. 発表概要 & 予備知識
main
2. JPEGアルゴリズム
3. softwareのみでmotionJPEG再生
4. 一部処理をhardware化
5. JPEG処理をhardware化
6. まとめ
7. おまけ

13年10月21日月曜日
自己紹介

SoC

カスタムデータパスハードマクロ
static timing analyzer
大学院で論理合成アルゴリズム研究
SoCの物理実装
不揮発メモリ開発
トランジスタばらつき測定システム

物理実装とCSを十数年やってました。
13年10月21日月曜日
android + hardware

http:/
/k2-garage.com
13年10月21日月曜日
書籍出版しました
テーマ
ソフトウェア処理で重たい部分をハードウェア化
して高速化する手法を学ぶ
実習書です。

対象読者
SoC開発のエッセンスを学びたい人

13年10月21日月曜日
概要

LAN上にあるサーバからmotionJPEGファイルをスト
リーミング。FPGA上のSoCで動画表示
このようなSoCを開発することでSoC開発のエッセン
ス(ソフト処理をハード処理にすることで高速化する)
を学習します。
13年10月21日月曜日
こんな感じのSoCをFPGA上で動かします

13年10月21日月曜日
開発フロー

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

13年10月21日月曜日
予備知識: memory
DRAM

SRAM

面積   小       大
速度   遅       速
製造   専用

13年10月21日月曜日

標準logic
予備知識: FPGA
4∼6入力のSRAMの
メモリの中の値と
接続を変更することで
任意のlogicを実現

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

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

13年10月21日月曜日
JPEG decode Algorithmの主な構造

huffman decode
量子化を戻す

2D-DCT変換
YCbCr-RGB変換

13年10月21日月曜日
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年10月21日月曜日
Agenda
introduction
1. 発表概要 & 予備知識
main
2. JPEGアルゴリズム
3. softwareのみでmotionJPEG再生
4. 一部処理をhardware化
5. JPEG処理をhardware化
6. まとめ
7. エクストリームなおまけ

13年10月21日月曜日
FPGA上にSoCを実現!

13年10月21日月曜日
開発するSoC

SPARC V8 CPU, AHB・APBバス, ethernet mac......
13年10月21日月曜日
最初にFPGA上にSoCをインプリ
Linuxをブートしてソフトウェアのみで
システムを動作させる。

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

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

13年10月21日月曜日
linuxについてもconfigurationさえすれば
動作するsnapgear-linuxが公開されてます。

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

13年10月21日月曜日
jpegソフトウェアについては定評のある
IJG(International Jpeg Group)のjpeg library
を使用します。

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

13年10月21日月曜日
softもhardもgitで管理

xilinx
altera
actel
ASICでも!
動作します

sourceforgeの MJPEG-LEON-FPGA に
repositoryがあります。
13年10月21日月曜日
Boot!

とりあえず、フレームバッファにコンソール出力するとこうな
ります。以降はコンソールはUART。
13年10月21日月曜日
IJG付属のjpeg表示ソフトを少し変更すると
motionJPEG表示できます。

遅い!!!!!! (こんなに小さな画面でもカクカク)
(ちなみに動作周波数40MHz)
13年10月21日月曜日
ちなみにVGAサイズだと、、、

13年10月21日月曜日
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年10月21日月曜日
software処理でデータはどう流れる? (1)

IU,cache,MMU

13年10月21日月曜日
software処理でデータはどう流れる? (3)

cache miss とMMU
13年10月21日月曜日
software処理でデータはどう流れる? (2)

cache miss とMMU
13年10月21日月曜日
software処理でデータはどう流れる? (4)

framebuffer出力も同時動作
memory controllerの入り口もかなり厳しい
13年10月21日月曜日
Agenda
introduction
1. 発表概要 & 予備知識
main
2. JPEGアルゴリズム
3. softwareのみでmotionJPEG再生
4. 一部処理をhardware化
5. JPEG処理をhardware化
6. まとめ
7. エクストリームなおまけ

13年10月21日月曜日
以下の様な要素技術をマスター

・IPコア設計
・AMBAバスの理解とインターフェース設計
・デバイスドライバ開発

13年10月21日月曜日

(この発表ではふれません)
AMBA busにつながるIPコア

YCbCr
-RGB

13年10月21日月曜日
YCbCr-RGB演算をハード化
R=Y
+ 1.40200(Cr-128)
G = Y -0.34414(Cb-128) - 0.71414(Cr-128)
B = Y +1.77200(Cb-128)

hardwareは並行動作可能
動作周波数を満たす限り直列接続可能
13年10月21日月曜日
他にも考慮しないといけないものがある
BUS

13年10月21日月曜日
Busって何? (1)

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

いつキャッシュミスが起きるかは
Hardware設計時にも分からないし、アプリケーション開発時にも分からない
13年10月21日月曜日
Busって何? (2)

bus上にマスタは複数あって要求が出るタイミングは
分からないので当然ぶつかる
13年10月21日月曜日
Busって何? (3)

アービタが交通整理をしている
13年10月21日月曜日
Busって何? (4)

どのようなタイミングで要求や応答が起きても
正しく動くように構造やプロトコルを規定したもの
13年10月21日月曜日
YCbCr-RGBコア概要設計

processorから書き込まれるslave interfaceと
SDRAM上のframe bufferに書き込むmaster interface
両方を持ちます
13年10月21日月曜日
実行すると

殆どfps変わらない!?

13年10月21日月曜日
CPU使用時間の変化

13年10月21日月曜日
データの流れ

huffman, DCTは同じ
13年10月21日月曜日
データの流れ

YCbCr-RGB変換はハード
この時huffman, DCTが並行動作に注意
13年10月21日月曜日
データの流れ

RGB信号は出し続ける
13年10月21日月曜日
データの流れ

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

13年10月21日月曜日
huffman, dctもhardware化

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

13年10月21日月曜日
再生!

ソフト処理より遥かに大きな画面サイズで
動画再生
13年10月21日月曜日
fpsが上がる理由

13年10月21日月曜日
Agenda
introduction
1. 発表概要 & 予備知識
main
2. JPEGアルゴリズム
3. softwareのみでmotionJPEG再生
4. 一部処理をhardware化
5. JPEG処理をhardware化
6. まとめ
7. おまけ

13年10月21日月曜日
まとめ(1)

13年10月21日月曜日
まとめ(2)

13年10月21日月曜日
Agenda
introduction
1. 発表概要 & 予備知識
main
2. JPEGアルゴリズム
3. softwareのみでmotionJPEG再生
4. 一部処理をhardware化
5. JPEG処理をhardware化
6. まとめ
7. おまけ

13年10月21日月曜日
softwareに対するFPGAの優位性

・ハードウェア処理の方が圧倒的な低クロ
ック数で処理可能
・バスボトルネックに対して対応したシス
テム構造を組める

13年10月21日月曜日
FPGA vs ASIC

pros
 開発コスト・期間短い
 少量の場合安価
 動作時書き換え可能
cons
処理能力 ASIC >>> FPGA
消費電力大
大量の場合コストでASICに負ける
13年10月21日月曜日
以上のような条件の中でFPGAに合ったマーケットは?
最近話題になっているのは金融HFT

FPGAを搭載したレイヤ7スイッチで
演算をして答えを返す
->低レイテンシの実現
13年10月21日月曜日
lambda architecture
real-time
stream
processing

rule化

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

13年10月21日月曜日

database
fin

13年10月21日月曜日

More Related Content

Similar to OSC Tokyo 2013/Fall

2015年度GPGPU実践基礎工学 第4回 CPUのアーキテクチャ
2015年度GPGPU実践基礎工学 第4回 CPUのアーキテクチャ2015年度GPGPU実践基礎工学 第4回 CPUのアーキテクチャ
2015年度GPGPU実践基礎工学 第4回 CPUのアーキテクチャ智啓 出川
 
ソフトウェア技術者から見たFPGAの魅力と可能性
ソフトウェア技術者から見たFPGAの魅力と可能性ソフトウェア技術者から見たFPGAの魅力と可能性
ソフトウェア技術者から見たFPGAの魅力と可能性Kenichiro MITSUDA
 
20210731_OSC_Kyoto_PGStrom3.0
20210731_OSC_Kyoto_PGStrom3.020210731_OSC_Kyoto_PGStrom3.0
20210731_OSC_Kyoto_PGStrom3.0Kohei KaiGai
 
20220525_kobayashi.pdf
20220525_kobayashi.pdf20220525_kobayashi.pdf
20220525_kobayashi.pdf直久 住川
 
Serviceability Toolsの裏側
Serviceability Toolsの裏側Serviceability Toolsの裏側
Serviceability Toolsの裏側Yasumasa Suenaga
 
FPGA, AI, エッジコンピューティング
FPGA, AI, エッジコンピューティングFPGA, AI, エッジコンピューティング
FPGA, AI, エッジコンピューティングHideo Terada
 
Cell/B.E. プログラミング事始め
Cell/B.E. プログラミング事始めCell/B.E. プログラミング事始め
Cell/B.E. プログラミング事始めYou&I
 
20191115-PGconf.Japan
20191115-PGconf.Japan20191115-PGconf.Japan
20191115-PGconf.JapanKohei KaiGai
 
GPU-FPGA協調プログラミングを実現するコンパイラの開発
GPU-FPGA協調プログラミングを実現するコンパイラの開発GPU-FPGA協調プログラミングを実現するコンパイラの開発
GPU-FPGA協調プログラミングを実現するコンパイラの開発Ryuuta Tsunashima
 
HPC で使えそうな FPGA 搭載 AWS F1 インスタンス 20170127
HPC で使えそうな FPGA 搭載 AWS F1 インスタンス 20170127HPC で使えそうな FPGA 搭載 AWS F1 インスタンス 20170127
HPC で使えそうな FPGA 搭載 AWS F1 インスタンス 20170127HPCシステムズ株式会社
 
ICSをビルドしてみた
ICSをビルドしてみたICSをビルドしてみた
ICSをビルドしてみたkinneko
 
2015 0228 OpenStack swift; GMO Internet Services
2015 0228 OpenStack swift; GMO Internet Services2015 0228 OpenStack swift; GMO Internet Services
2015 0228 OpenStack swift; GMO Internet ServicesNaoto Gohko
 
pgconfasia2016 lt ssd2gpu
pgconfasia2016 lt ssd2gpupgconfasia2016 lt ssd2gpu
pgconfasia2016 lt ssd2gpuKohei KaiGai
 
20170329_BigData基盤研究会#7
20170329_BigData基盤研究会#720170329_BigData基盤研究会#7
20170329_BigData基盤研究会#7Kohei KaiGai
 

Similar to OSC Tokyo 2013/Fall (20)

2015年度GPGPU実践基礎工学 第4回 CPUのアーキテクチャ
2015年度GPGPU実践基礎工学 第4回 CPUのアーキテクチャ2015年度GPGPU実践基礎工学 第4回 CPUのアーキテクチャ
2015年度GPGPU実践基礎工学 第4回 CPUのアーキテクチャ
 
Ptt391
Ptt391Ptt391
Ptt391
 
ソフトウェア技術者から見たFPGAの魅力と可能性
ソフトウェア技術者から見たFPGAの魅力と可能性ソフトウェア技術者から見たFPGAの魅力と可能性
ソフトウェア技術者から見たFPGAの魅力と可能性
 
なにわTech20160827
なにわTech20160827なにわTech20160827
なにわTech20160827
 
20210731_OSC_Kyoto_PGStrom3.0
20210731_OSC_Kyoto_PGStrom3.020210731_OSC_Kyoto_PGStrom3.0
20210731_OSC_Kyoto_PGStrom3.0
 
20220525_kobayashi.pdf
20220525_kobayashi.pdf20220525_kobayashi.pdf
20220525_kobayashi.pdf
 
JTAG入門
JTAG入門JTAG入門
JTAG入門
 
Serviceability Toolsの裏側
Serviceability Toolsの裏側Serviceability Toolsの裏側
Serviceability Toolsの裏側
 
FPGA, AI, エッジコンピューティング
FPGA, AI, エッジコンピューティングFPGA, AI, エッジコンピューティング
FPGA, AI, エッジコンピューティング
 
Cell/B.E. プログラミング事始め
Cell/B.E. プログラミング事始めCell/B.E. プログラミング事始め
Cell/B.E. プログラミング事始め
 
ICD/CPSY 201412
ICD/CPSY 201412ICD/CPSY 201412
ICD/CPSY 201412
 
20191115-PGconf.Japan
20191115-PGconf.Japan20191115-PGconf.Japan
20191115-PGconf.Japan
 
PreadNet
PreadNetPreadNet
PreadNet
 
GPU-FPGA協調プログラミングを実現するコンパイラの開発
GPU-FPGA協調プログラミングを実現するコンパイラの開発GPU-FPGA協調プログラミングを実現するコンパイラの開発
GPU-FPGA協調プログラミングを実現するコンパイラの開発
 
HPC で使えそうな FPGA 搭載 AWS F1 インスタンス 20170127
HPC で使えそうな FPGA 搭載 AWS F1 インスタンス 20170127HPC で使えそうな FPGA 搭載 AWS F1 インスタンス 20170127
HPC で使えそうな FPGA 搭載 AWS F1 インスタンス 20170127
 
ICSをビルドしてみた
ICSをビルドしてみたICSをビルドしてみた
ICSをビルドしてみた
 
2015 0228 OpenStack swift; GMO Internet Services
2015 0228 OpenStack swift; GMO Internet Services2015 0228 OpenStack swift; GMO Internet Services
2015 0228 OpenStack swift; GMO Internet Services
 
pgconfasia2016 lt ssd2gpu
pgconfasia2016 lt ssd2gpupgconfasia2016 lt ssd2gpu
pgconfasia2016 lt ssd2gpu
 
20170329_BigData基盤研究会#7
20170329_BigData基盤研究会#720170329_BigData基盤研究会#7
20170329_BigData基盤研究会#7
 
なにわTech20161215
なにわTech20161215 なにわTech20161215
なにわTech20161215
 

More from 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
 

More from 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
 

OSC Tokyo 2013/Fall