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. ...
自己紹介

SoC

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

物理実装とCSを十数年やってました。
...
android + hardware

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

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

13年10月21日月曜日
概要

LAN上にあるサーバからmotionJPEGファイルをスト
リーミング。FPGA上のSoCで動画表示
このようなSoCを開発することでSoC開発のエッセン
ス(ソフト処理をハード処理にすることで高速化する)
を学習します。
13年10月...
こんな感じの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. ...
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)
単なる色空間の変換演算です!
今日はここにFoc...
Agenda
introduction
1. 発表概要 & 予備知識
main
2. JPEGアルゴリズム
3. softwareのみでmotionJPEG再生
4. 一部処理をhardware化
5. JPEG処理をhardware化
6. ...
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...
linuxについてもconfigurationさえすれば
動作するsnapgear-linuxが公開されてます。

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

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

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

13年10...
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/ca...
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. ...
以下の様な要素技術をマスター

・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は並行動作可能
動作...
他にも考慮しないといけないものがある
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. ...
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. ...
まとめ(1)

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

13年10月21日月曜日
Agenda
introduction
1. 発表概要 & 予備知識
main
2. JPEGアルゴリズム
3. softwareのみでmotionJPEG再生
4. 一部処理をhardware化
5. JPEG処理をhardware化
6. ...
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日月曜日
Upcoming SlideShare
Loading in …5
×

OSC Tokyo 2013/Fall

916 views

Published on

Opensource conference Tokyo 2013/Fall

Talk about Opensource SoC(System on Chip) on FPGA

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

No Downloads
Views
Total views
916
On SlideShare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
Downloads
7
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

OSC Tokyo 2013/Fall

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

×