スライド 1 - Welcome to Fukunaga Lab.

並列処理プロセッサを用いた
動画像処理システムの開発
数理情報科学専攻 福永研究室
唐木 靖雅
2015/10/1
首都大学東京 修士論文発表会 S.Karaki
1
研究背景-TPCOREの変遷
•
2005年度
– TPCORE完成
• Inmos社Transputer-T425をベースとして開発された
•
2008年度
– 動作速度の向上
• これまで動作周波数が24MHzであったTPCOREが48MHzまで
向上した(現在のFPGAでは50MHzで動作確認)
•
2009年度
– VirtualChannel&Routerの開発
• ネットワークトポロジに依らない自由なネットワーク構成が可能
となった
•
2010年度
– 実数演算機構の開発
• ハードウェアによる高速な実数演算が可能となった(T800互換)
2015/10/1
首都大学東京 修士論文発表会 S.Karaki
2
研究背景-動機
• 昨年度までの研究でTPCOREはより実用的なプロセッサ
となった.
• そこで現在, TPCOREを動画像処理に応用し,
「電動車椅子危険探知および回避システム」
の開発を行っている.
• このシステム開発にはTPCOREにカメラ画像を取得する
機能が必須である.
TPCOREへカメラインターフェースを実装
2015/10/1
首都大学東京 修士論文発表会 S.Karaki
3
研究背景-実装における問題点
• 旧来のTPCOREのメモリでは動画像を扱うには不十分.
(動画1フレームのサイズ648×494 = 約32KBに対し,
メモリ容量16KB)
– TPCOREはOSを必要としない
並列処理プロセッサであるため,
各プロセッサにそれほど大きい
メモリを持つ必要はなかった
• このままではインターフェースを
実装しても取得したフレームを
TPCORE内に保持できない.
FPGA
外部メモリ
外部メモリを実装することで解決
2015/10/1
首都大学東京 修士論文発表会 S.Karaki
4
CameraLinkインターフェース
• 本研究ではCameraLinkという規格を採用した.
• 理由は動画像データが非圧縮で転送されるので
直接TPCOREで処理が可能であるため.
転送される信号
525
1
2
8
9
10
11
25
26
27
28
522 523 524 525
1
2
3
22
23
24
LVAL
FVAL
DVAL
•
•
•
•
•
CLK
FVAL
LVAL
DVAL
DATA
: 25MHz
: 垂直同期信号
: 水平同期信号
: データ同期信号
: 画素データ
DATA
9H
503 504 505
14H
516 517 518 519
LVAL
FVAL
DVAL
DATA
494H
2015/10/1
8H
TOTAL : 525H
(1H : 780clk)
首都大学東京 修士論文発表会 S.Karaki
使用カメラ : VCC-G21V31CL(CIS社)
モノクロカメラ
5
TPCOREへの組み込み
• TPCOREのデータバス(32bit)とアドレスバス(21bit)に接続.
• 既存の命令”move”を使用して大量のデータを1命令で
メモリへ取得する.
TPCOREの命令で
CameraLink信号
を解析
imgbufにアクセスで
きるようにするため
の部分
cl_data
camera
cl_if
req
TPCORE
本研究のCameraLink
インターフェースに関して
新規に設計したのは
黄色の部分
pix_data, waddr etc.
pix_
data
pix_
data
dbus
imgbufctrl
動画像フレームを
バッファ(一時保存)
常に最新のフレー
ムをバッファし続け
ている
2015/10/1
imgbuf
(320112 byte
=648×494 byte)
addr
addr
TPRAM
move命令 :
メモリ間の配列コピー
首都大学東京 修士論文発表会 S.Karaki
6
move命令
• 本システムではこのmove命令を使用し各周辺機器へ
アクセスしている.
• move命令はメモリのあるアドレスから別のアドレスへ
データをコピーする命令である.
Memory
…
…
01010010
2015/10/1
…
10010101
…
00101011
11010010
…
…
…
…
…
…
…
...
…
…
…
…
…
…
…
…
…
…
…
…
…
…
...
…
首都大学東京 修士論文発表会 S.Karaki
7
TPCOREの機能追加
• move命令により外部のimgbufへアクセスできるようにする
ため主にデータバスに変更を加えた.
– メモリアクセスの際, アドレスによりアクセス先を切り替えるスイッチ
を用意
これまで
TPCORE
addr : #80000003
addr
data
…
TPRAM
3
data
…
2015/10/1
首都大学東京 修士論文発表会 S.Karaki
8
TPCOREの機能追加
• move命令により外部のimgbufへアクセスできるようにする
ため主にデータバスに変更を加えた.
– メモリアクセスの際, アドレスによりアクセス先を切り替えるスイッチ
を用意
現在
TPCORE
camera
addr
data
0
data
21bit目が1のアドレスにアクセスした時
imgbufへアクセスする.
例)10000000000100000000000000000000
→imgbufの0番地
addr : #80100000
…
…
addr
imgbuf
data
…
TPRAM
3
data
…
2015/10/1
首都大学東京 修士論文発表会 S.Karaki
9
ソフトウェア側のアクセス方法
• OccamのPLACE文によってimgbuf上に変数を宣言するこ
とによってアクセス.
– 例)imgbufから100byte分の画像データを取得
データの取得自体
は可能だが,
メモリの容量の
問題でフレーム
全ては取得
[100]BYTE x:
しきれない
約32KB
data
imgbuf
(読み取り専用)
BLANK
21bit目が1のアドレスにアクセスした時…とあったが,
この記述でそのアドレスを指定してアクセスを
実現している.
2015/10/1
首都大学東京 修士論文発表会 S.Karaki
16KB
TPRAM
10
外部メモリの実装-DDR2-SDRAM
• ここまでの研究でTPCOREはカメラの動画像を取得できる
ようになった.
• しかし, TPCOREのメモリ(16KB)では1フレームを保持する
のにも不十分である.
• そこで, 使用している評価ボードに標準搭載されている
DDR2-SDRAMを外部メモリとして利用できるようにした.
– さらに1MBのメモリ領域が使用可能となった
• そのためにさらにTPCOREに変更を加え, 外部メモリにアク
セスするためのインターフェースも作成した.
• これにより, 画像1フレームの保持だけでなく, 複数フレーム
の保持, 処理後の結果の保存などが可能となった.
2015/10/1
首都大学東京 修士論文発表会 S.Karaki
11
外部メモリを含めたシステム概略図
TPCOREの命令で
DDR2-SDRAMにア
クセスできるように
するための部分
camera
cl_if
TPCORE
dbus
imgbufctrl
ddr-if
DDR2-SDRAM
imgbuf
TPRAM
外部メモリ
(約1MB)
2015/10/1
首都大学東京 修士論文発表会 S.Karaki
12
システムの動作
画像取得中
camera
001001…
cl_if
TPCORE
dbus
frame
imgbufctrl
frame
imgbuf
frame3
frame2
frame1
ddr-if
DDR2-SDRAM
addr : #80004xxx
#8010xxxx
TPRAM
Imgbufへの
外部メモリへの
読み込み信号
書き込み信号
2015/10/1
首都大学東京 修士論文発表会 S.Karaki
13
システムの動作
データ処理中
camera
001001…
cl_if
TPCORE
dbus
imgbufctrl
data
imgbuf
frame3
frame2
frame1
ddr-if
DDR2-SDRAM
data
addr
addr :: #80004xxx
#8xxxxxxx
TPRAM
外部メモリへの
Memoryへの
読み込み信号
書き込み信号
2015/10/1
首都大学東京 修士論文発表会 S.Karaki
14
外部メモリへのアクセス方法
• 基本的にはimgbufへのアクセス方法と同様である.
• データバスの分岐をさらに増やし, 外部メモリへもアクセス
可能にした.
• ソフトウェア側もimgbufと同様にPLACE文で実現.
約32KB
15bit目~20bit目のいずれかが1のアドレスにアクセスし
た時外部メモリへアクセスする.
imgbuf
(読み取り専用)
data
[320112]BYTE xx:
[320112]BYTE yy:
約1MB
• PLACE文を用いることにより, ソフトを書くユーザ側
からはimgbufも外部メモリも従来のメモリ(TPRAM)
16KB
も一様に扱うことができる.
2015/10/1
首都大学東京 修士論文発表会 S.Karaki
外部メモリ
(DDR2-SDRAM)
TPRAM
15
画像データの取得時間-理論値
• Imgbuf => 外部メモリ
– byte数nに対し(6n+2) clkの処理時間がかかる.
– 本研究で使用したカメラの画像データは320112byteである.
– テスト時のTPCOREの動作周波数は25MHz (1clk = 40ns).
処理時間(ns) = (6×320112+2)×40=76826960 (ns)
• 外部メモリ => TPRAM
– テスト時の条件は上と同様.
– 外部メモリから読み込む際には(10n+2)clkの処理時間がかかる.
処理時間(ns) = (10×320112+2)×40=128044880 (ns)
画像データの取得時間は
204871840 (ns)
2015/10/1
首都大学東京 修士論文発表会 S.Karaki
約0.205秒
(約5fps)
16
画像データの取得時間-実測値
• 実際にFPGAに実装し, 取得にかかる時間を計測した.
約0.077秒
約0.131秒
約0.208秒
計測結果
move命令の準備時間等により多少のずれはあったが,
ほぼ理論値通りの計測結果となった
2015/10/1
首都大学東京 修士論文発表会 S.Karaki
17
動作検証
• カメラの動画像の各フレーム平均輝度を出力
– 輝度は0~255で表される.
正常動作していることが確認できた
2015/10/1
首都大学東京 修士論文発表会 S.Karaki
18
まとめ
• TPCOREへCameraLinkインターフェースを実装する
ことにより, カメラの動画像を取得できるようになった.
• さらに, メモリが容量不足だったTPCOREに外部メモリを
実装することで取得した画像データを保持できるようになっ
た.
– TPRAM・imgbuf・外部メモリをユーザ側からはPLACE文によって
一様に扱うことができる仕様になっている
• 以上により, TPCOREを動画像処理に用いることが
可能となったといえる.
電動車椅子の危険探知および回避システムへ
TPCOREを活用可能となった
2015/10/1
首都大学東京 修士論文発表会 S.Karaki
19
今後
• ステレオカメラへの対応
• 動画像処理を行うための最適な
ハードウェア構成の検討
• 処理の効率化のためにmove命令の改良
– 本研究ではmove命令を多用したが,
このmove命令を改良することによって
大幅に処理速度を向上させることが可能である.
現状のmove命令は,
byte数nに対し, (6n+2) clk
の処理を行っている.
これを, アクセス単位を変更
することにより理論上はさらに
高速化できると考えられる.
• データ取得をDMA(DirectMemoryAccess)
方式へ
2015/10/1
首都大学東京 修士論文発表会 S.Karaki
20
「電動車椅子」へのシステムの提案
CameraLink
camera(right)
TPCORE
CameraLink
camera(left)
TPCORE
DDR2SDRAM
DDR2SDRAM
ROUTER
TPCORE
・・・
TPCORE
TPCOREの台数はスケーラビリティや画像処理アルゴリズム
の計算量を参考にさらに検討が必要である.
2015/10/1
首都大学東京 修士論文発表会 S.Karaki
21