SlideShare a Scribd company logo
1 of 28
Download to read offline
Company Proprietary Confidential Toyota InfoTechnology Center Co., Ltd. All Rights Reserved.
非整列ストリームデータ処理向け
マルチコアプロセッサシステムの検討と評価
株式会社トヨタIT開発センター
三好 健文
1
Company Proprietary Confidential Toyota InfoTechnology Center Co., Ltd. All Rights Reserved.
背景
2
https://iotnews.jp/archives/12873
Company Proprietary Confidential Toyota InfoTechnology Center Co., Ltd. All Rights Reserved.
背景
3
http://www.ntt.co.jp/ir/library/nttis/201712/feature1.html?link_id=ir-b0004
Company Proprietary Confidential Toyota InfoTechnology Center Co., Ltd. All Rights Reserved.
背景
4
組み込み機器
利用可能メモリの制約
記憶領域の制約
通信容量の制約
サーバー
多様なアプリケーション
WiFi, 5G, LoRa, ...
なるだけデータを圧縮したい
=> ビット・バイトレベルでのデータ表現
ビットアサイン表の共有
簡単にデータを扱いたい
(数値, 文字列)
Company Proprietary Confidential Toyota InfoTechnology Center Co., Ltd. All Rights Reserved.
背景
5
1.ISO 11783-3:2014, “Tractors and machinery for agricul- ture and forestry – serial control and communications data network – part 3: Data link layer,”
May 2014. https: //www.iso.org/standard/57554.html
Company Proprietary Confidential Toyota InfoTechnology Center Co., Ltd. All Rights Reserved.
背景
6
https://medium.com/@zengcode/messagepack-for-java-bdde520ee574
https://github.com/msgpack/msgpack-c/wiki/v2_0_cpp_unpacker
Company Proprietary Confidential Toyota InfoTechnology Center Co., Ltd. All Rights Reserved.
背景
7
組み込み機器
利用可能メモリの制約
記憶領域の制約
通信容量の制約
サーバー
多様なアプリケーション
なるだけデータを圧縮したい
=> ビット・バイトレベルでのデータ表現
ビットアサイン表の共有
簡単にデータを扱いたい
(数値, 文字列)
WiFi, 5G, LoRa, ...
解析・復号
SW
大変!!
a
b
c
d
e
fg
….
ID
Company Proprietary Confidential Toyota InfoTechnology Center Co., Ltd. All Rights Reserved.
背景
8
◆組み込みではビット・バイトレベルのデータ解析が必須
◆多種多様なデータを扱うのは,結構大変
=> あれ?FPGAでやってみると,いいのでは?
Company Proprietary Confidential Toyota InfoTechnology Center Co., Ltd. All Rights Reserved.
FPGAによる解析・復号の動作と目標見積もり
9
✓ データフォーマットに応じた処理で復号・解析
✓ ワード長に合わないデータへの対応も適当なバッファで対応できそう
✓ 仮に,データ入出力幅512bitを動作周波数100MHzでさばければ,
✓ 出力が4Byte単位であれば,1600Mアイテム/sで処理可能という超楽観的な見積もり
✓ データ入出力帯域 51.2Gbps(=6.4 GBps) は,それなりに現実的
✓ うまくデータ並列性,パイプライン化できるアーキテクチャを考えればいい!!
a
b
c
d
e
f
g
復号・解析後のデータ
…. c’f’ a’b’d’e’g’
FPGA
….
.
.
.
ID毎のフォーマットに
合わせた復号・解析処理
ID ID
ID毎のフォーマットに
合わせた復号・解析処理
ID毎のフォーマットに
合わせた復号・解析処理
a’ = a * 3.14
b’ = b[2:0] + b[5:3]
c’ = c[0]
Company Proprietary Confidential Toyota InfoTechnology Center Co., Ltd. All Rights Reserved.
例題: CANデータの復号・解析
10
テーブルID
データ長
付加情報
ヘッダデータ
ID
長さ
値
ID
長さ
値
ID
長さ
値
ID
長さ
値
ID
長さ
値
ID
長さ
値
ID
長さ
値
ある機器から,あるタイミングで
送られてきたデータ
ここがワードアライメントに
乗るかどうかは保証はされない
✓ 車種,データ長および付加情報の載ったヘッダ+CANデータの連続
512bit
テーブルID
データ長
付加情報
Company Proprietary Confidential Toyota InfoTechnology Center Co., Ltd. All Rights Reserved.
専用ロジックを考えてみる…
11
アライメント
データ
対象データ構造毎
のロジック
非アライメント
データ
✓ ナイーブな実装方式
入力データ 出力データ
処理ロジック
✓非整列データをビット・バイトレベルで処理すると必要サイクル数が増加する
✓ストリームデータの入力フロントエンドで,オフセットをあわせる
Company Proprietary Confidential Toyota InfoTechnology Center Co., Ltd. All Rights Reserved.
専用ロジックを考えてみる…
12
アライメント
データ
対象データ構造毎
のロジック
非アライメント
データ
✓ ナイーブな実装方式
入力データ 出力データ
処理ロジック
Item ALM (427200) M20K(2713) DSP Blocks(1518)
処理ロジック 4065 (0.95%) 38(1.4%) 2-4(0.13-0.26%)
Data Fetcher 2076 22
Data Emitter 1124 16
PE 656
✓ Arria® 10 GX FPGA 10AX115N2F40E2LG(Intel PAC) を想定してのリソース使用率
✓ ある対象データの処理(ビット切り出し,加減算,浮動小数点数演算)ロジックの実装例
✓ 甘く見積もっても100個くらいしか入らない
✓ 同じ対象データが連続してくると処理レイテンシが隠蔽できない
=> 対象データに対して汎用的な演算機構が必要
Company Proprietary Confidential Toyota InfoTechnology Center Co., Ltd. All Rights Reserved.
課題とアプローチ
13
◆ 処理対象のバリエーションが大きい
◆ どの処理を適用するか決定する処理で性能が律速
◆ 関連研究: UDP @ MICRO50
◆複数の命令フェッチを可能にする専用演算ユニットを追加
← FPGAの場合,多ポートのメモリ/メモリバンド幅が問題に
→ フェッチ機構を前倒しすることで,時間方向で多重化
MA, USA Y. Fang et al.
ad engine.
xpanding variety of
e control ow, large
chine-standard data
these philosophies
roducing poor per-
el lanes (Figure 3a),
oding. Parallel lanes
ncoding and trans-
cludes support for
(a) 64-lane UDP. (b) UDP lane adds three elem ents (green) to a tradi-
tional CPU m icro-architecture.
Figure 3: UDP and UDP Lane M icro-architecture.
3.2 UDP Lane: Fast Sym bol and Branch
Processing
The UDP’s 64 lanes each accelerate symbol-oriented conditional
processing. The four most important UDP lane capabilities include:
1) multi-way dispatch, 2) variable-size symbol support, 3) exible
Y. Fang, C. Zou, A.J. Elmore, and A.A. Chien, “Udp: A programmable accelerator for extract-transform-load workloads and more,”
Proceedings of the 50th Annual IEEE/ACM International Symposium on Microarchitec- ture, pp.55–68, MICRO-50 ’17, ACM, New York, NY, USA, 2017.
Company Proprietary Confidential Toyota InfoTechnology Center Co., Ltd. All Rights Reserved.
アーキテクチャ概要
14
入力データに応じて,
対象車種用の命令列をフェッチ
対象車種16bitとして,
DRAMのアドレスにマッピング
与えられた命令列を使って
入力データをパース,物理量変換
✓ 命令フェッチをデータ処理に先行して実行
それなりの個数並べればFPGA上の
簡単なコアでもデータをさばける,と期待
Company Proprietary Confidential Toyota InfoTechnology Center Co., Ltd. All Rights Reserved.
処理の記述方式
15
a
b
c
d
e
f
g
…. c’f’ a’b’d’e’g’…. ID ID
a’ = a * 3.14
b’ = b[2:0] + b[5:3]
c’ = c[0]
parser test{
table : 11;
value : <64;
}
task test(id=1){
v0 : int<10> { return v0 + 10; }
v1 : int<7> { return v1 * 2; }
}
task test(id=2){
v0 : float<5> { return v0 - 16; }
v1 : int<16>
v2 : int<16> { return v1 + v2; }
}
Company Proprietary Confidential Toyota InfoTechnology Center Co., Ltd. All Rights Reserved.
命令フェッチユニット
16
✓ 入力データを処理に先行してパース,車種に応じた命令列を読み出す
✓ DRAMリードレイテンシ分(数百サイクル程度)を稼ぐのが目的
Company Proprietary Confidential Toyota InfoTechnology Center Co., Ltd. All Rights Reserved.
命令フェッチユニット
17
id=1 len=128 attr
id=2 len=192 attr
data
data
data
data
data
id=2 len=64 attr
data id=3 len=512 data
id=4 len=128 attr data
入力データ
対象ノードに振り分けて出力
読んだ命令を各ノードに出力
命令読み出し
Company Proprietary Confidential Toyota InfoTechnology Center Co., Ltd. All Rights Reserved.
演算ユニット
18
✓ 命令列に従ってCANデータを解析・復号.
✓ データアライメント・パディングは前・後段で処理
✓ CANデータフレームを一つずつ読み出せるようData Fetcherで前さばき
✓ ← controllerの対象フレームは必ずワードの先頭からはじまる
Company Proprietary Confidential Toyota InfoTechnology Center Co., Ltd. All Rights Reserved.
入力データと命令形式
19
ID
(11bit)
長さ
OP
これをキーに,
命令メモリから
最初の命令を
読み出す
入力データ
対象ビット長
定数
命令(32bit)
入力データに順々に適用
Source
(reg./FIFO)
Destination
(reg./FIFO)
命令/データメモリ
先頭11bit分は
入力データから
飛んでくる
(=割り込みベクタ)
2K命令 + 14K命令
= 16K命令 = 64KB
5 3 3 105
✓算術演算
✓論理演算
✓比較
✓条件分岐
✓ロード・ストア
(出力ビット長)
51
Company Proprietary Confidential Toyota InfoTechnology Center Co., Ltd. All Rights Reserved.
入力データと命令形式
20
if pe_src(2) = '0' then -- use register file
case to_integer(unsigned(pe_src(1 downto 0))) is
when 0 => src0 := register_file(31 downto 0);
when 1 => src0 := register_file(63 downto 32);
when 2 => src0 := register_file(95 downto 64);
when 3 => src0 := register_file(127 downto 96);
when others => src0 := (others => '0');
end case;
elsif pe_src = "110" then -- use imm
src0(7 downto 0) := pe_imm(9 downto 2);
src0(31 downto 8) := (others => '0');
elsif pe_src = "111" then -- use imm(signed ext)
src0(7 downto 0) := pe_imm(9 downto 2);
src0(31 downto 8) := (others => pe_imm(9));
else -- use FIFO
-- get fifo data into src0
if data_bits < 31 then
src0(data_bits downto 0) := target_data_reg(data_bits downto 0);
if pe_src(0) = '0' then
src0(31 downto data_bits+1) := (others => '0');
else
src0(31 downto data_bits+1) := (others => target_data_reg(data_bits));
end if;
else
src0 := target_data_reg(31 downto 0);
end if;
-- consume fifo data
target_update_data(63-(data_bits+1) downto 0) := target_data_reg(63 downto (data_bits+1));
target_update_data(63 downto 63-(data_bits+1)+1) := (others => '0');
target_update_we := '1';
end if;
✓ ソースオペランド0: FIFOかレジスタか即値
レジスタファイルから
定数フィールドから
(unsigned/signed)
FIFOから長さ指定
(unsigned/signed)
Company Proprietary Confidential Toyota InfoTechnology Center Co., Ltd. All Rights Reserved.
入力データと命令形式
21
if pe_dst(2) = '1' then
fifo_out_v := result;
fifo_we_v := '1';
register_update_we := '0';
else
fifo_we_v := '0';
case to_integer(unsigned(pe_dst(1 downto 0))) is
when 0 =>
register_update_data(127 downto 32) := register_file(127 downto 32);
register_update_data(31 downto 0) := result;
register_update_we := '1';
when 1 =>
register_update_data(127 downto 64) := register_file(127 downto 64);
register_update_data(63 downto 32) := result;
register_update_data(31 downto 0) := register_file(31 downto 0);
register_update_we := '1';
when 2 =>
register_update_data(127 downto 96) := register_file(127 downto 96);
register_update_data(95 downto 64) := result;
register_update_data(63 downto 0) := register_file(63 downto 0);
register_update_we := '1';
when 3 =>
register_update_data(127 downto 96) := result;
register_update_data(95 downto 0) := register_file(95 downto 0);
register_update_we := '1';
when others =>
register_update_data := register_file;
register_update_we := '0';
end case;
end if;
✓ 演算結果の出力: FIFOかレジスタ
FIFOへ出力
レジスタファイル
への出力
Company Proprietary Confidential Toyota InfoTechnology Center Co., Ltd. All Rights Reserved.
演算ユニット
22
データと命令がきたら
演算を実行
Company Proprietary Confidential Toyota InfoTechnology Center Co., Ltd. All Rights Reserved.
演算ユニット
23
PE_OP_LI, 1,00000,00000,000,000,0011111111
PE_OP_ADD, 1,00000,00000,000,100,0000000000
PE_OP_MOV, 1,00000,00000,100,100,0000000000
PE_OP_MOV, 1,00000,00000,100,100,0000000000
PE_OP_MOV, 1,00000,00000,100,100,0000000000
PE_OP_MOV, 1,00000,00000,100,100,0000000000
PE_OP_MOV, 1,00000,00000,100,100,0000000000
PE_OP_MOV, 1,00000,00000,100,100,0000000000
PE_OP_MOV, 1,00000,00000,100,100,0000000000
PE_OP_MOV, 1,00000,00000,100,100,0000000000
PE_OP_MOV, 1,00000,00000,100,100,0000000000
PE_OP_HALT,0,00000,00000,100,100,0000000000
毎サイクル入力されたデータを1bitずつ切り出して
32bit化して出力している
Company Proprietary Confidential Toyota InfoTechnology Center Co., Ltd. All Rights Reserved.
演算ユニット
24
ADD NOT EQ FADD RSHIFT MOV JMP
SUB AND NEQ FMUL LSHIFT MOVS JZ
MUL OR GT F2I ZERO HALT
DIV XOR LT I2F LI
✓ 命令(いまのところ)
Company Proprietary Confidential Toyota InfoTechnology Center Co., Ltd. All Rights Reserved.
ターゲット環境とリソース使用量
25
FPGA Intel® Arria10 GT FPGA 10AT115S2F45E2SG
1150K LEs, 53Mb(M20K)
メモリ 8GB DDR4
I/F PCIe Gen3 x8, QSFP 4x10G x2
✓ ターゲットFPGAボードのスペック
✓ リソース使用量
ALM M20K
ペリフェラル 75342(17%) 137(5.0%)
命令フェッチユニット 4133(0.27%) 30(1.1%)
セレクタ 1042(0.24%) 5(0.18%)
演算ユニット(1個)
演算コア 3073(0.72%) 30(1.1%)
データフェッチ/エミッタ 3200(0.77%) 20(1.48%)
演算ユニット 30個時 269634(63%) 2272(83%)
演算ユニット 20個時 206925(49%) 1572(57%)
Company Proprietary Confidential Toyota InfoTechnology Center Co., Ltd. All Rights Reserved.
実行性能見積もり
26
✓ベストケース: 128bit入力から64bitのデータを生成(処理しない場合)
-> kick, MOV, MOVの3サイクル
-> 15nsで,128bitの入力を処理
-> 入力データに対する処理スループット = 約 8.5Gbps
✓典型的なシナリオの一例: 64bitのデータを16bitのデータに分割して出力
-> kick, LI, LI, ADD, LI, LI, ADD, LI, LI, ADD, LI, LI, ADD
-> 65nsで,128bitの入力を処理
-> 入力データに対する処理スループット = 約 2.0Gbps
たとえば,40Gbpsの入力データをさばくためにはコアを20個並べればよい
(注: 出力は十分に速いか,適当に捨てられるデータがある必要はある)
✓ スループット(コアが200MHzで動作する場合)
Company Proprietary Confidential Toyota InfoTechnology Center Co., Ltd. All Rights Reserved.
メモリレイテンシの隠蔽について
27
パケットサイズ(Bytes)
サイクル数
n=30時の隠蔽可能なメモリレイテンシ
✓ 命令読み出しレイテンシ L サイクル,搭載演算ユニット数 n
✓ パケットサイズ l word = l * 256 bit
✓ メモリレイテンシを隠蔽するためには, L < l * n が必要
✓演算ユニット数 n=30,レイテンシ L=200 ならば, l > 6.6
← l=7 は,パケットサイズ1792bit(= 224Byte)に相当= CANデータ13~14個
命令読み出し
レイテンシを隠せる部分
Company Proprietary Confidential Toyota InfoTechnology Center Co., Ltd. All Rights Reserved.
まとめと今後の課題
28
◆ 非整列な組み込み機器のデータ復号・解析処理向けのプロセッサコアを検討
◆汎用プロセッサでの性能向上は,結構難しい(25Mアイテム/秒)
◆FPGA上にプロセッサを構成,命令フェッチユニットを前倒し
◆データ転送を1命令で実行可能な命令セット
◆FPGA上に実装可能な演算ユニット数について評価
◆処理スループットの見積もり
◆入力データパケットサイズと隠蔽可能な命令読み出しレイテンシの見積もり
◆ 実環境,実データでの評価
◆ もう少し汎化できないか
← フェッチユニットなどをコンフィギュレーションして対応できると
他のデータにも対応できてうれしい?
✓ まとめ
✓ 今後の課題

More Related Content

What's hot

PyCoRAM (高位合成友の会@ドワンゴ, 2015年1月16日)
PyCoRAM (高位合成友の会@ドワンゴ, 2015年1月16日)PyCoRAM (高位合成友の会@ドワンゴ, 2015年1月16日)
PyCoRAM (高位合成友の会@ドワンゴ, 2015年1月16日)Shinya Takamaeda-Y
 
【A-1】AIを支えるGPUコンピューティングの今
【A-1】AIを支えるGPUコンピューティングの今【A-1】AIを支えるGPUコンピューティングの今
【A-1】AIを支えるGPUコンピューティングの今Developers Summit
 
Fpga online seminar by fixstars (1st)
Fpga online seminar by fixstars (1st)Fpga online seminar by fixstars (1st)
Fpga online seminar by fixstars (1st)Fixstars Corporation
 
多数の小容量FPGAを用いた スケーラブルなステンシル計算機の開発
多数の小容量FPGAを用いた スケーラブルなステンシル計算機の開発多数の小容量FPGAを用いた スケーラブルなステンシル計算機の開発
多数の小容量FPGAを用いた スケーラブルなステンシル計算機の開発Ryohei Kobayashi
 
ACRi_webinar_20220118_miyo
ACRi_webinar_20220118_miyoACRi_webinar_20220118_miyo
ACRi_webinar_20220118_miyoTakefumi MIYOSHI
 
メモリ抽象化フレームワークPyCoRAMを用いたソフトプロセッサ混載FPGAアクセラレータの開発
メモリ抽象化フレームワークPyCoRAMを用いたソフトプロセッサ混載FPGAアクセラレータの開発メモリ抽象化フレームワークPyCoRAMを用いたソフトプロセッサ混載FPGAアクセラレータの開発
メモリ抽象化フレームワークPyCoRAMを用いたソフトプロセッサ混載FPGAアクセラレータの開発Shinya Takamaeda-Y
 
NVIDIA Japan Seminar 2012
NVIDIA Japan Seminar 2012NVIDIA Japan Seminar 2012
NVIDIA Japan Seminar 2012Takuro Iizuka
 
GlusterFSとInfiniBandの小話
GlusterFSとInfiniBandの小話GlusterFSとInfiniBandの小話
GlusterFSとInfiniBandの小話Keisuke Takahashi
 
Synthesijer.Scala (PROSYM 2015)
Synthesijer.Scala (PROSYM 2015)Synthesijer.Scala (PROSYM 2015)
Synthesijer.Scala (PROSYM 2015)Takefumi MIYOSHI
 
PyCoRAMによるPythonを用いたポータブルなFPGAアクセラレータ開発 (チュートリアル@ESS2014)
PyCoRAMによるPythonを用いたポータブルなFPGAアクセラレータ開発 (チュートリアル@ESS2014)PyCoRAMによるPythonを用いたポータブルなFPGAアクセラレータ開発 (チュートリアル@ESS2014)
PyCoRAMによるPythonを用いたポータブルなFPGAアクセラレータ開発 (チュートリアル@ESS2014)Shinya Takamaeda-Y
 
オープンソースコンパイラNNgenでつくるエッジ・ディープラーニングシステム
オープンソースコンパイラNNgenでつくるエッジ・ディープラーニングシステムオープンソースコンパイラNNgenでつくるエッジ・ディープラーニングシステム
オープンソースコンパイラNNgenでつくるエッジ・ディープラーニングシステムShinya Takamaeda-Y
 
PyCoRAMを用いたグラフ処理FPGAアクセラレータ
PyCoRAMを用いたグラフ処理FPGAアクセラレータPyCoRAMを用いたグラフ処理FPGAアクセラレータ
PyCoRAMを用いたグラフ処理FPGAアクセラレータShinya Takamaeda-Y
 
増え続ける情報に対応するためのFPGA基礎知識
増え続ける情報に対応するためのFPGA基礎知識増え続ける情報に対応するためのFPGA基礎知識
増え続ける情報に対応するためのFPGA基礎知識なおき きしだ
 

What's hot (20)

Fpga local 20130322
Fpga local 20130322Fpga local 20130322
Fpga local 20130322
 
Fpgax 20130604
Fpgax 20130604Fpgax 20130604
Fpgax 20130604
 
PyCoRAM (高位合成友の会@ドワンゴ, 2015年1月16日)
PyCoRAM (高位合成友の会@ドワンゴ, 2015年1月16日)PyCoRAM (高位合成友の会@ドワンゴ, 2015年1月16日)
PyCoRAM (高位合成友の会@ドワンゴ, 2015年1月16日)
 
【A-1】AIを支えるGPUコンピューティングの今
【A-1】AIを支えるGPUコンピューティングの今【A-1】AIを支えるGPUコンピューティングの今
【A-1】AIを支えるGPUコンピューティングの今
 
Reconf 201506
Reconf 201506Reconf 201506
Reconf 201506
 
ICD/CPSY 201412
ICD/CPSY 201412ICD/CPSY 201412
ICD/CPSY 201412
 
Myoshimi extreme
Myoshimi extremeMyoshimi extreme
Myoshimi extreme
 
Fpga online seminar by fixstars (1st)
Fpga online seminar by fixstars (1st)Fpga online seminar by fixstars (1st)
Fpga online seminar by fixstars (1st)
 
多数の小容量FPGAを用いた スケーラブルなステンシル計算機の開発
多数の小容量FPGAを用いた スケーラブルなステンシル計算機の開発多数の小容量FPGAを用いた スケーラブルなステンシル計算機の開発
多数の小容量FPGAを用いた スケーラブルなステンシル計算機の開発
 
Vyatta 201310
Vyatta 201310Vyatta 201310
Vyatta 201310
 
ACRi_webinar_20220118_miyo
ACRi_webinar_20220118_miyoACRi_webinar_20220118_miyo
ACRi_webinar_20220118_miyo
 
メモリ抽象化フレームワークPyCoRAMを用いたソフトプロセッサ混載FPGAアクセラレータの開発
メモリ抽象化フレームワークPyCoRAMを用いたソフトプロセッサ混載FPGAアクセラレータの開発メモリ抽象化フレームワークPyCoRAMを用いたソフトプロセッサ混載FPGAアクセラレータの開発
メモリ抽象化フレームワークPyCoRAMを用いたソフトプロセッサ混載FPGAアクセラレータの開発
 
FPGAって、何?
FPGAって、何?FPGAって、何?
FPGAって、何?
 
NVIDIA Japan Seminar 2012
NVIDIA Japan Seminar 2012NVIDIA Japan Seminar 2012
NVIDIA Japan Seminar 2012
 
GlusterFSとInfiniBandの小話
GlusterFSとInfiniBandの小話GlusterFSとInfiniBandの小話
GlusterFSとInfiniBandの小話
 
Synthesijer.Scala (PROSYM 2015)
Synthesijer.Scala (PROSYM 2015)Synthesijer.Scala (PROSYM 2015)
Synthesijer.Scala (PROSYM 2015)
 
PyCoRAMによるPythonを用いたポータブルなFPGAアクセラレータ開発 (チュートリアル@ESS2014)
PyCoRAMによるPythonを用いたポータブルなFPGAアクセラレータ開発 (チュートリアル@ESS2014)PyCoRAMによるPythonを用いたポータブルなFPGAアクセラレータ開発 (チュートリアル@ESS2014)
PyCoRAMによるPythonを用いたポータブルなFPGAアクセラレータ開発 (チュートリアル@ESS2014)
 
オープンソースコンパイラNNgenでつくるエッジ・ディープラーニングシステム
オープンソースコンパイラNNgenでつくるエッジ・ディープラーニングシステムオープンソースコンパイラNNgenでつくるエッジ・ディープラーニングシステム
オープンソースコンパイラNNgenでつくるエッジ・ディープラーニングシステム
 
PyCoRAMを用いたグラフ処理FPGAアクセラレータ
PyCoRAMを用いたグラフ処理FPGAアクセラレータPyCoRAMを用いたグラフ処理FPGAアクセラレータ
PyCoRAMを用いたグラフ処理FPGAアクセラレータ
 
増え続ける情報に対応するためのFPGA基礎知識
増え続ける情報に対応するためのFPGA基礎知識増え続ける情報に対応するためのFPGA基礎知識
増え続ける情報に対応するためのFPGA基礎知識
 

Similar to Reconf 201901

FPGAによる大規模データ処理の高速化
FPGAによる大規模データ処理の高速化FPGAによる大規模データ処理の高速化
FPGAによる大規模データ処理の高速化Kazunori Sato
 
Aerospike on IDCF Cloud
Aerospike on IDCF CloudAerospike on IDCF Cloud
Aerospike on IDCF CloudIDC Frontier
 
統合ログ分析技術Lognosisと運用ログ分析の取組
統合ログ分析技術Lognosisと運用ログ分析の取組統合ログ分析技術Lognosisと運用ログ分析の取組
統合ログ分析技術Lognosisと運用ログ分析の取組NTT Software Innovation Center
 
[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...
[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...
[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...Tomoya Hibi
 
【招待講演】ICM研究会 - 統合ログ分析技術Lognosisと運用ログ分析の取組
【招待講演】ICM研究会 - 統合ログ分析技術Lognosisと運用ログ分析の取組【招待講演】ICM研究会 - 統合ログ分析技術Lognosisと運用ログ分析の取組
【招待講演】ICM研究会 - 統合ログ分析技術Lognosisと運用ログ分析の取組NTT Software Innovation Center
 
Lagopusで試すFW
Lagopusで試すFWLagopusで試すFW
Lagopusで試すFWTomoya Hibi
 
整数列圧縮
整数列圧縮整数列圧縮
整数列圧縮JAVA DM
 
C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by Taichi Umeda
C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi UmedaC22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda
C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by Taichi UmedaInsight Technology, Inc.
 
Getting Started with Jetson Nano
Getting Started with Jetson NanoGetting Started with Jetson Nano
Getting Started with Jetson NanoNVIDIA Japan
 
[db tech showcase Tokyo 2016] D13: NVMeフラッシュストレージを用いた高性能高拡張高可用なデータベースシステムの実現方...
[db tech showcase Tokyo 2016] D13: NVMeフラッシュストレージを用いた高性能高拡張高可用なデータベースシステムの実現方...[db tech showcase Tokyo 2016] D13: NVMeフラッシュストレージを用いた高性能高拡張高可用なデータベースシステムの実現方...
[db tech showcase Tokyo 2016] D13: NVMeフラッシュストレージを用いた高性能高拡張高可用なデータベースシステムの実現方...Insight Technology, Inc.
 
Packetbeatの基礎から、IoTデバイス異常検知への応用まで
Packetbeatの基礎から、IoTデバイス異常検知への応用までPacketbeatの基礎から、IoTデバイス異常検知への応用まで
Packetbeatの基礎から、IoTデバイス異常検知への応用までSatoyuki Tsukano
 
【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介
【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介
【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介NTT Communications Technology Development
 
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)NTT DATA Technology & Innovation
 
DeNAインフラの今とこれから - 今編 -
DeNAインフラの今とこれから - 今編 -DeNAインフラの今とこれから - 今編 -
DeNAインフラの今とこれから - 今編 -Tomoya Kabe
 
AI/MLシステムにおけるビッグデータとの付き合い方
AI/MLシステムにおけるビッグデータとの付き合い方AI/MLシステムにおけるビッグデータとの付き合い方
AI/MLシステムにおけるビッグデータとの付き合い方Shota Suzuki
 
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月 知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月 VirtualTech Japan Inc.
 
サバフェス上位入賞者にみる ioMemory×MySQL 最新チューニング教えます
サバフェス上位入賞者にみる ioMemory×MySQL  最新チューニング教えますサバフェス上位入賞者にみる ioMemory×MySQL  最新チューニング教えます
サバフェス上位入賞者にみる ioMemory×MySQL 最新チューニング教えますIDC Frontier
 
ARPトラブルあるある JANOG38 LT
ARPトラブルあるある JANOG38 LTARPトラブルあるある JANOG38 LT
ARPトラブルあるある JANOG38 LT一清 井上
 
Jubatus分類器の活用テクニック
Jubatus分類器の活用テクニックJubatus分類器の活用テクニック
Jubatus分類器の活用テクニックJubatusOfficial
 

Similar to Reconf 201901 (20)

FPGAによる大規模データ処理の高速化
FPGAによる大規模データ処理の高速化FPGAによる大規模データ処理の高速化
FPGAによる大規模データ処理の高速化
 
Aerospike on IDCF Cloud
Aerospike on IDCF CloudAerospike on IDCF Cloud
Aerospike on IDCF Cloud
 
統合ログ分析技術Lognosisと運用ログ分析の取組
統合ログ分析技術Lognosisと運用ログ分析の取組統合ログ分析技術Lognosisと運用ログ分析の取組
統合ログ分析技術Lognosisと運用ログ分析の取組
 
[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...
[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...
[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...
 
【招待講演】ICM研究会 - 統合ログ分析技術Lognosisと運用ログ分析の取組
【招待講演】ICM研究会 - 統合ログ分析技術Lognosisと運用ログ分析の取組【招待講演】ICM研究会 - 統合ログ分析技術Lognosisと運用ログ分析の取組
【招待講演】ICM研究会 - 統合ログ分析技術Lognosisと運用ログ分析の取組
 
perfを使ったPostgreSQLの解析(後編)
perfを使ったPostgreSQLの解析(後編)perfを使ったPostgreSQLの解析(後編)
perfを使ったPostgreSQLの解析(後編)
 
Lagopusで試すFW
Lagopusで試すFWLagopusで試すFW
Lagopusで試すFW
 
整数列圧縮
整数列圧縮整数列圧縮
整数列圧縮
 
C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by Taichi Umeda
C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi UmedaC22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda
C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by Taichi Umeda
 
Getting Started with Jetson Nano
Getting Started with Jetson NanoGetting Started with Jetson Nano
Getting Started with Jetson Nano
 
[db tech showcase Tokyo 2016] D13: NVMeフラッシュストレージを用いた高性能高拡張高可用なデータベースシステムの実現方...
[db tech showcase Tokyo 2016] D13: NVMeフラッシュストレージを用いた高性能高拡張高可用なデータベースシステムの実現方...[db tech showcase Tokyo 2016] D13: NVMeフラッシュストレージを用いた高性能高拡張高可用なデータベースシステムの実現方...
[db tech showcase Tokyo 2016] D13: NVMeフラッシュストレージを用いた高性能高拡張高可用なデータベースシステムの実現方...
 
Packetbeatの基礎から、IoTデバイス異常検知への応用まで
Packetbeatの基礎から、IoTデバイス異常検知への応用までPacketbeatの基礎から、IoTデバイス異常検知への応用まで
Packetbeatの基礎から、IoTデバイス異常検知への応用まで
 
【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介
【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介
【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介
 
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
 
DeNAインフラの今とこれから - 今編 -
DeNAインフラの今とこれから - 今編 -DeNAインフラの今とこれから - 今編 -
DeNAインフラの今とこれから - 今編 -
 
AI/MLシステムにおけるビッグデータとの付き合い方
AI/MLシステムにおけるビッグデータとの付き合い方AI/MLシステムにおけるビッグデータとの付き合い方
AI/MLシステムにおけるビッグデータとの付き合い方
 
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月 知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
 
サバフェス上位入賞者にみる ioMemory×MySQL 最新チューニング教えます
サバフェス上位入賞者にみる ioMemory×MySQL  最新チューニング教えますサバフェス上位入賞者にみる ioMemory×MySQL  最新チューニング教えます
サバフェス上位入賞者にみる ioMemory×MySQL 最新チューニング教えます
 
ARPトラブルあるある JANOG38 LT
ARPトラブルあるある JANOG38 LTARPトラブルあるある JANOG38 LT
ARPトラブルあるある JANOG38 LT
 
Jubatus分類器の活用テクニック
Jubatus分類器の活用テクニックJubatus分類器の活用テクニック
Jubatus分類器の活用テクニック
 

More from Takefumi MIYOSHI

More from Takefumi MIYOSHI (20)

DAS_202109
DAS_202109DAS_202109
DAS_202109
 
ACRiルーム1年間の活動と 新たな取り組み
ACRiルーム1年間の活動と 新たな取り組みACRiルーム1年間の活動と 新たな取り組み
ACRiルーム1年間の活動と 新たな取り組み
 
RISC-V introduction for SIG SDR in CQ 2019.07.29
RISC-V introduction for SIG SDR in CQ 2019.07.29RISC-V introduction for SIG SDR in CQ 2019.07.29
RISC-V introduction for SIG SDR in CQ 2019.07.29
 
Misc for edge_devices_with_fpga
Misc for edge_devices_with_fpgaMisc for edge_devices_with_fpga
Misc for edge_devices_with_fpga
 
Cq off 20190718
Cq off 20190718Cq off 20190718
Cq off 20190718
 
Synthesijer - HLS frineds 20190511
Synthesijer - HLS frineds 20190511Synthesijer - HLS frineds 20190511
Synthesijer - HLS frineds 20190511
 
Hls friends 201803.key
Hls friends 201803.keyHls friends 201803.key
Hls friends 201803.key
 
Hls friends 20161122.key
Hls friends 20161122.keyHls friends 20161122.key
Hls friends 20161122.key
 
Slide
SlideSlide
Slide
 
Synthesijer and Synthesijer.Scala in HLS-friends 201512
Synthesijer and Synthesijer.Scala in HLS-friends 201512Synthesijer and Synthesijer.Scala in HLS-friends 201512
Synthesijer and Synthesijer.Scala in HLS-friends 201512
 
Das 2015
Das 2015Das 2015
Das 2015
 
Microblaze loader
Microblaze loaderMicroblaze loader
Microblaze loader
 
Synthesijer jjug 201504_01
Synthesijer jjug 201504_01Synthesijer jjug 201504_01
Synthesijer jjug 201504_01
 
Synthesijer zynq qs_20150316
Synthesijer zynq qs_20150316Synthesijer zynq qs_20150316
Synthesijer zynq qs_20150316
 
Synthesijer fpgax 20150201
Synthesijer fpgax 20150201Synthesijer fpgax 20150201
Synthesijer fpgax 20150201
 
Synthesijer hls 20150116
Synthesijer hls 20150116Synthesijer hls 20150116
Synthesijer hls 20150116
 
Fpgax 20130830
Fpgax 20130830Fpgax 20130830
Fpgax 20130830
 
Ptt391
Ptt391Ptt391
Ptt391
 
Google 20130218
Google 20130218Google 20130218
Google 20130218
 
Bluespec @waseda(PDF)
Bluespec @waseda(PDF)Bluespec @waseda(PDF)
Bluespec @waseda(PDF)
 

Reconf 201901

  • 1. Company Proprietary Confidential Toyota InfoTechnology Center Co., Ltd. All Rights Reserved. 非整列ストリームデータ処理向け マルチコアプロセッサシステムの検討と評価 株式会社トヨタIT開発センター 三好 健文 1
  • 2. Company Proprietary Confidential Toyota InfoTechnology Center Co., Ltd. All Rights Reserved. 背景 2 https://iotnews.jp/archives/12873
  • 3. Company Proprietary Confidential Toyota InfoTechnology Center Co., Ltd. All Rights Reserved. 背景 3 http://www.ntt.co.jp/ir/library/nttis/201712/feature1.html?link_id=ir-b0004
  • 4. Company Proprietary Confidential Toyota InfoTechnology Center Co., Ltd. All Rights Reserved. 背景 4 組み込み機器 利用可能メモリの制約 記憶領域の制約 通信容量の制約 サーバー 多様なアプリケーション WiFi, 5G, LoRa, ... なるだけデータを圧縮したい => ビット・バイトレベルでのデータ表現 ビットアサイン表の共有 簡単にデータを扱いたい (数値, 文字列)
  • 5. Company Proprietary Confidential Toyota InfoTechnology Center Co., Ltd. All Rights Reserved. 背景 5 1.ISO 11783-3:2014, “Tractors and machinery for agricul- ture and forestry – serial control and communications data network – part 3: Data link layer,” May 2014. https: //www.iso.org/standard/57554.html
  • 6. Company Proprietary Confidential Toyota InfoTechnology Center Co., Ltd. All Rights Reserved. 背景 6 https://medium.com/@zengcode/messagepack-for-java-bdde520ee574 https://github.com/msgpack/msgpack-c/wiki/v2_0_cpp_unpacker
  • 7. Company Proprietary Confidential Toyota InfoTechnology Center Co., Ltd. All Rights Reserved. 背景 7 組み込み機器 利用可能メモリの制約 記憶領域の制約 通信容量の制約 サーバー 多様なアプリケーション なるだけデータを圧縮したい => ビット・バイトレベルでのデータ表現 ビットアサイン表の共有 簡単にデータを扱いたい (数値, 文字列) WiFi, 5G, LoRa, ... 解析・復号 SW 大変!! a b c d e fg …. ID
  • 8. Company Proprietary Confidential Toyota InfoTechnology Center Co., Ltd. All Rights Reserved. 背景 8 ◆組み込みではビット・バイトレベルのデータ解析が必須 ◆多種多様なデータを扱うのは,結構大変 => あれ?FPGAでやってみると,いいのでは?
  • 9. Company Proprietary Confidential Toyota InfoTechnology Center Co., Ltd. All Rights Reserved. FPGAによる解析・復号の動作と目標見積もり 9 ✓ データフォーマットに応じた処理で復号・解析 ✓ ワード長に合わないデータへの対応も適当なバッファで対応できそう ✓ 仮に,データ入出力幅512bitを動作周波数100MHzでさばければ, ✓ 出力が4Byte単位であれば,1600Mアイテム/sで処理可能という超楽観的な見積もり ✓ データ入出力帯域 51.2Gbps(=6.4 GBps) は,それなりに現実的 ✓ うまくデータ並列性,パイプライン化できるアーキテクチャを考えればいい!! a b c d e f g 復号・解析後のデータ …. c’f’ a’b’d’e’g’ FPGA …. . . . ID毎のフォーマットに 合わせた復号・解析処理 ID ID ID毎のフォーマットに 合わせた復号・解析処理 ID毎のフォーマットに 合わせた復号・解析処理 a’ = a * 3.14 b’ = b[2:0] + b[5:3] c’ = c[0]
  • 10. Company Proprietary Confidential Toyota InfoTechnology Center Co., Ltd. All Rights Reserved. 例題: CANデータの復号・解析 10 テーブルID データ長 付加情報 ヘッダデータ ID 長さ 値 ID 長さ 値 ID 長さ 値 ID 長さ 値 ID 長さ 値 ID 長さ 値 ID 長さ 値 ある機器から,あるタイミングで 送られてきたデータ ここがワードアライメントに 乗るかどうかは保証はされない ✓ 車種,データ長および付加情報の載ったヘッダ+CANデータの連続 512bit テーブルID データ長 付加情報
  • 11. Company Proprietary Confidential Toyota InfoTechnology Center Co., Ltd. All Rights Reserved. 専用ロジックを考えてみる… 11 アライメント データ 対象データ構造毎 のロジック 非アライメント データ ✓ ナイーブな実装方式 入力データ 出力データ 処理ロジック ✓非整列データをビット・バイトレベルで処理すると必要サイクル数が増加する ✓ストリームデータの入力フロントエンドで,オフセットをあわせる
  • 12. Company Proprietary Confidential Toyota InfoTechnology Center Co., Ltd. All Rights Reserved. 専用ロジックを考えてみる… 12 アライメント データ 対象データ構造毎 のロジック 非アライメント データ ✓ ナイーブな実装方式 入力データ 出力データ 処理ロジック Item ALM (427200) M20K(2713) DSP Blocks(1518) 処理ロジック 4065 (0.95%) 38(1.4%) 2-4(0.13-0.26%) Data Fetcher 2076 22 Data Emitter 1124 16 PE 656 ✓ Arria® 10 GX FPGA 10AX115N2F40E2LG(Intel PAC) を想定してのリソース使用率 ✓ ある対象データの処理(ビット切り出し,加減算,浮動小数点数演算)ロジックの実装例 ✓ 甘く見積もっても100個くらいしか入らない ✓ 同じ対象データが連続してくると処理レイテンシが隠蔽できない => 対象データに対して汎用的な演算機構が必要
  • 13. Company Proprietary Confidential Toyota InfoTechnology Center Co., Ltd. All Rights Reserved. 課題とアプローチ 13 ◆ 処理対象のバリエーションが大きい ◆ どの処理を適用するか決定する処理で性能が律速 ◆ 関連研究: UDP @ MICRO50 ◆複数の命令フェッチを可能にする専用演算ユニットを追加 ← FPGAの場合,多ポートのメモリ/メモリバンド幅が問題に → フェッチ機構を前倒しすることで,時間方向で多重化 MA, USA Y. Fang et al. ad engine. xpanding variety of e control ow, large chine-standard data these philosophies roducing poor per- el lanes (Figure 3a), oding. Parallel lanes ncoding and trans- cludes support for (a) 64-lane UDP. (b) UDP lane adds three elem ents (green) to a tradi- tional CPU m icro-architecture. Figure 3: UDP and UDP Lane M icro-architecture. 3.2 UDP Lane: Fast Sym bol and Branch Processing The UDP’s 64 lanes each accelerate symbol-oriented conditional processing. The four most important UDP lane capabilities include: 1) multi-way dispatch, 2) variable-size symbol support, 3) exible Y. Fang, C. Zou, A.J. Elmore, and A.A. Chien, “Udp: A programmable accelerator for extract-transform-load workloads and more,” Proceedings of the 50th Annual IEEE/ACM International Symposium on Microarchitec- ture, pp.55–68, MICRO-50 ’17, ACM, New York, NY, USA, 2017.
  • 14. Company Proprietary Confidential Toyota InfoTechnology Center Co., Ltd. All Rights Reserved. アーキテクチャ概要 14 入力データに応じて, 対象車種用の命令列をフェッチ 対象車種16bitとして, DRAMのアドレスにマッピング 与えられた命令列を使って 入力データをパース,物理量変換 ✓ 命令フェッチをデータ処理に先行して実行 それなりの個数並べればFPGA上の 簡単なコアでもデータをさばける,と期待
  • 15. Company Proprietary Confidential Toyota InfoTechnology Center Co., Ltd. All Rights Reserved. 処理の記述方式 15 a b c d e f g …. c’f’ a’b’d’e’g’…. ID ID a’ = a * 3.14 b’ = b[2:0] + b[5:3] c’ = c[0] parser test{ table : 11; value : <64; } task test(id=1){ v0 : int<10> { return v0 + 10; } v1 : int<7> { return v1 * 2; } } task test(id=2){ v0 : float<5> { return v0 - 16; } v1 : int<16> v2 : int<16> { return v1 + v2; } }
  • 16. Company Proprietary Confidential Toyota InfoTechnology Center Co., Ltd. All Rights Reserved. 命令フェッチユニット 16 ✓ 入力データを処理に先行してパース,車種に応じた命令列を読み出す ✓ DRAMリードレイテンシ分(数百サイクル程度)を稼ぐのが目的
  • 17. Company Proprietary Confidential Toyota InfoTechnology Center Co., Ltd. All Rights Reserved. 命令フェッチユニット 17 id=1 len=128 attr id=2 len=192 attr data data data data data id=2 len=64 attr data id=3 len=512 data id=4 len=128 attr data 入力データ 対象ノードに振り分けて出力 読んだ命令を各ノードに出力 命令読み出し
  • 18. Company Proprietary Confidential Toyota InfoTechnology Center Co., Ltd. All Rights Reserved. 演算ユニット 18 ✓ 命令列に従ってCANデータを解析・復号. ✓ データアライメント・パディングは前・後段で処理 ✓ CANデータフレームを一つずつ読み出せるようData Fetcherで前さばき ✓ ← controllerの対象フレームは必ずワードの先頭からはじまる
  • 19. Company Proprietary Confidential Toyota InfoTechnology Center Co., Ltd. All Rights Reserved. 入力データと命令形式 19 ID (11bit) 長さ OP これをキーに, 命令メモリから 最初の命令を 読み出す 入力データ 対象ビット長 定数 命令(32bit) 入力データに順々に適用 Source (reg./FIFO) Destination (reg./FIFO) 命令/データメモリ 先頭11bit分は 入力データから 飛んでくる (=割り込みベクタ) 2K命令 + 14K命令 = 16K命令 = 64KB 5 3 3 105 ✓算術演算 ✓論理演算 ✓比較 ✓条件分岐 ✓ロード・ストア (出力ビット長) 51
  • 20. Company Proprietary Confidential Toyota InfoTechnology Center Co., Ltd. All Rights Reserved. 入力データと命令形式 20 if pe_src(2) = '0' then -- use register file case to_integer(unsigned(pe_src(1 downto 0))) is when 0 => src0 := register_file(31 downto 0); when 1 => src0 := register_file(63 downto 32); when 2 => src0 := register_file(95 downto 64); when 3 => src0 := register_file(127 downto 96); when others => src0 := (others => '0'); end case; elsif pe_src = "110" then -- use imm src0(7 downto 0) := pe_imm(9 downto 2); src0(31 downto 8) := (others => '0'); elsif pe_src = "111" then -- use imm(signed ext) src0(7 downto 0) := pe_imm(9 downto 2); src0(31 downto 8) := (others => pe_imm(9)); else -- use FIFO -- get fifo data into src0 if data_bits < 31 then src0(data_bits downto 0) := target_data_reg(data_bits downto 0); if pe_src(0) = '0' then src0(31 downto data_bits+1) := (others => '0'); else src0(31 downto data_bits+1) := (others => target_data_reg(data_bits)); end if; else src0 := target_data_reg(31 downto 0); end if; -- consume fifo data target_update_data(63-(data_bits+1) downto 0) := target_data_reg(63 downto (data_bits+1)); target_update_data(63 downto 63-(data_bits+1)+1) := (others => '0'); target_update_we := '1'; end if; ✓ ソースオペランド0: FIFOかレジスタか即値 レジスタファイルから 定数フィールドから (unsigned/signed) FIFOから長さ指定 (unsigned/signed)
  • 21. Company Proprietary Confidential Toyota InfoTechnology Center Co., Ltd. All Rights Reserved. 入力データと命令形式 21 if pe_dst(2) = '1' then fifo_out_v := result; fifo_we_v := '1'; register_update_we := '0'; else fifo_we_v := '0'; case to_integer(unsigned(pe_dst(1 downto 0))) is when 0 => register_update_data(127 downto 32) := register_file(127 downto 32); register_update_data(31 downto 0) := result; register_update_we := '1'; when 1 => register_update_data(127 downto 64) := register_file(127 downto 64); register_update_data(63 downto 32) := result; register_update_data(31 downto 0) := register_file(31 downto 0); register_update_we := '1'; when 2 => register_update_data(127 downto 96) := register_file(127 downto 96); register_update_data(95 downto 64) := result; register_update_data(63 downto 0) := register_file(63 downto 0); register_update_we := '1'; when 3 => register_update_data(127 downto 96) := result; register_update_data(95 downto 0) := register_file(95 downto 0); register_update_we := '1'; when others => register_update_data := register_file; register_update_we := '0'; end case; end if; ✓ 演算結果の出力: FIFOかレジスタ FIFOへ出力 レジスタファイル への出力
  • 22. Company Proprietary Confidential Toyota InfoTechnology Center Co., Ltd. All Rights Reserved. 演算ユニット 22 データと命令がきたら 演算を実行
  • 23. Company Proprietary Confidential Toyota InfoTechnology Center Co., Ltd. All Rights Reserved. 演算ユニット 23 PE_OP_LI, 1,00000,00000,000,000,0011111111 PE_OP_ADD, 1,00000,00000,000,100,0000000000 PE_OP_MOV, 1,00000,00000,100,100,0000000000 PE_OP_MOV, 1,00000,00000,100,100,0000000000 PE_OP_MOV, 1,00000,00000,100,100,0000000000 PE_OP_MOV, 1,00000,00000,100,100,0000000000 PE_OP_MOV, 1,00000,00000,100,100,0000000000 PE_OP_MOV, 1,00000,00000,100,100,0000000000 PE_OP_MOV, 1,00000,00000,100,100,0000000000 PE_OP_MOV, 1,00000,00000,100,100,0000000000 PE_OP_MOV, 1,00000,00000,100,100,0000000000 PE_OP_HALT,0,00000,00000,100,100,0000000000 毎サイクル入力されたデータを1bitずつ切り出して 32bit化して出力している
  • 24. Company Proprietary Confidential Toyota InfoTechnology Center Co., Ltd. All Rights Reserved. 演算ユニット 24 ADD NOT EQ FADD RSHIFT MOV JMP SUB AND NEQ FMUL LSHIFT MOVS JZ MUL OR GT F2I ZERO HALT DIV XOR LT I2F LI ✓ 命令(いまのところ)
  • 25. Company Proprietary Confidential Toyota InfoTechnology Center Co., Ltd. All Rights Reserved. ターゲット環境とリソース使用量 25 FPGA Intel® Arria10 GT FPGA 10AT115S2F45E2SG 1150K LEs, 53Mb(M20K) メモリ 8GB DDR4 I/F PCIe Gen3 x8, QSFP 4x10G x2 ✓ ターゲットFPGAボードのスペック ✓ リソース使用量 ALM M20K ペリフェラル 75342(17%) 137(5.0%) 命令フェッチユニット 4133(0.27%) 30(1.1%) セレクタ 1042(0.24%) 5(0.18%) 演算ユニット(1個) 演算コア 3073(0.72%) 30(1.1%) データフェッチ/エミッタ 3200(0.77%) 20(1.48%) 演算ユニット 30個時 269634(63%) 2272(83%) 演算ユニット 20個時 206925(49%) 1572(57%)
  • 26. Company Proprietary Confidential Toyota InfoTechnology Center Co., Ltd. All Rights Reserved. 実行性能見積もり 26 ✓ベストケース: 128bit入力から64bitのデータを生成(処理しない場合) -> kick, MOV, MOVの3サイクル -> 15nsで,128bitの入力を処理 -> 入力データに対する処理スループット = 約 8.5Gbps ✓典型的なシナリオの一例: 64bitのデータを16bitのデータに分割して出力 -> kick, LI, LI, ADD, LI, LI, ADD, LI, LI, ADD, LI, LI, ADD -> 65nsで,128bitの入力を処理 -> 入力データに対する処理スループット = 約 2.0Gbps たとえば,40Gbpsの入力データをさばくためにはコアを20個並べればよい (注: 出力は十分に速いか,適当に捨てられるデータがある必要はある) ✓ スループット(コアが200MHzで動作する場合)
  • 27. Company Proprietary Confidential Toyota InfoTechnology Center Co., Ltd. All Rights Reserved. メモリレイテンシの隠蔽について 27 パケットサイズ(Bytes) サイクル数 n=30時の隠蔽可能なメモリレイテンシ ✓ 命令読み出しレイテンシ L サイクル,搭載演算ユニット数 n ✓ パケットサイズ l word = l * 256 bit ✓ メモリレイテンシを隠蔽するためには, L < l * n が必要 ✓演算ユニット数 n=30,レイテンシ L=200 ならば, l > 6.6 ← l=7 は,パケットサイズ1792bit(= 224Byte)に相当= CANデータ13~14個 命令読み出し レイテンシを隠せる部分
  • 28. Company Proprietary Confidential Toyota InfoTechnology Center Co., Ltd. All Rights Reserved. まとめと今後の課題 28 ◆ 非整列な組み込み機器のデータ復号・解析処理向けのプロセッサコアを検討 ◆汎用プロセッサでの性能向上は,結構難しい(25Mアイテム/秒) ◆FPGA上にプロセッサを構成,命令フェッチユニットを前倒し ◆データ転送を1命令で実行可能な命令セット ◆FPGA上に実装可能な演算ユニット数について評価 ◆処理スループットの見積もり ◆入力データパケットサイズと隠蔽可能な命令読み出しレイテンシの見積もり ◆ 実環境,実データでの評価 ◆ もう少し汎化できないか ← フェッチユニットなどをコンフィギュレーションして対応できると 他のデータにも対応できてうれしい? ✓ まとめ ✓ 今後の課題