SlideShare une entreprise Scribd logo
1  sur  44
第61回システム制御情報学会研究発表講演会 (SCI’17)
テーマセッション05「情報技術のロボット分野への応用」 招待講演
ソフトウェア志向の
組込みシステム協調設計環境
高瀬 英希
(京都大学)
takase@i.kyoto-u.ac.jp
講演内容
• はじめに
• プログラマブルSoCのための協調設計環境
− システム設計・合成フローとSW志向の入力記述
− SW/HW切分けと通信インタフェース
− 組込みリアルタイムシステム設計への対応
− ツールチェーン実装と設計空間探索への適用
• コンフィギュラブルLSIのための協調設計環境
− SW志向設計の方針と設計記述モデル
− 合成フローとメリット
− 現在の開発状況と適用事例
• まとめと今後の展望
2
研究対象:組込みシステム
情報通信
メディア機器
情報家電
OA機器
産業機械
ロボット
自動車
航空機
私たちの生活を豊かにする
専用コンピュータシステム
組込みシステムの設計技術
システムの「作り方」を創る
3
ロボットシステムの要件
4
外部環境・実世界
【アナログ】
ロボット・組込み
【デジタル】
外部環境との
インタラクション
省リソース
省電力
リアルタイム性
「決められたことをすぐにやる」
• 特定用途のみに特化した
専用のアーキテクチャ構成
• 必要なだけのデータ幅と演算
組込みシステムの計算資源
「言われたことはなんでもやる」
• すべてのケースをカバーする
汎用データパス
• 固定されたデータ幅と演算プロセッサ
&
ソフトウェア
ASIC
(専用回路)
ハードウェア
5
組込みシステムの計算資源
設計容易性・柔軟性
開発製造コスト
省電力性
性能・並列性プロセッサ
&
ソフトウェア
ASIC
(専用回路)
ハードウェア
FPGA
6
FPGAとは?
• Field Programmable Gate Array
− 中身を改変可能なLSI
− ハードウェアそのものの
振る舞いを変えられる
− 独自のデジタル回路を
自由に何回でも形成できる
− FPGA二大ベンダ:
Xilinx・Altera (powered by Intel)
7
IOB
SB
CB LB
IOB
IOB
SB
IOB LB
SB
CB CB
SB
CB
SB SB
CB CBLB IOBIOB LB
SB SB SB
IOB IOB
CB
CB
CB
CB
CB
CB
入出力ブロック
コネクションブロックLB 論理ブロック
IOBSB スイッチブロック
CB
LUT
IN OUT
0000 1
0001 0
0010 0
… …
1110 1
1111 0
D-FF
D Q
FPGAの強みとトレンド
• 1つのLSIで様々なシステムを設計できる
− プロセッサ処理より高性能かつ省電力を実現する
− ASICよりも製造コストを抑えられる
• データストリーム処理の実現が可能になる
− ノイマン・ボトルネックの解消に!
• 最近のトレンド
− 回路規模・集積度の増大
− プロセッサとの密結合化
− 高位合成の普及
8図の引用:M. Flynn, Using FPGAs for HPC acceleration: now and in 20 years, TCFPGA, 2012.
FPGAの用途
• ASICの設計・検証用LSIに活用
− ASICの機能を製造前に検証できる
− HWの完成前からSWの開発が始められる
• 最終製品に組み込むLSIに活用
− 民生品での実用例はすでにキリが無いほど多い
− 出荷後のデータ書き換え機能を持たせることも
• 最近の実用例
− 金融市場取引
− ロボット
− データセンター
− 機械学習
− オートモーティブ(ADAS)
9出典:井上, 情報処理学会誌, 2012. K. Ovtcharov, et al., HotChips27, 2015.
http://phenoxlab.com http://techon.nikkeibp.co.jp/atcl/news/16/062702771/
通
信
バ
ス
混載型のデバイス
• プロセッサ+FPGA+アナログ回路+専用バス
− 柔軟性の必要な逐次処理はプロセッサで,高速応答な並列処理は
FPGAで,外部環境とのインタラクションはアナログ回路で
− 高品質な組込み/IoTシステムを実現できる,かもしれない?
10
プロセッサ FPGA
HW
HW
SW
SW
アナログ回路
driver
SW
通
信
バ
ス
従来の協調設計
11
プロセッサ FPGA
HW
HW
SW
SW
アナログ回路
driver
SW
int_t main () {
a = func1(xxx);
b = func2(yyy);
c = a + b;
}
int_t func1(x) {
…
return val;
}
int_t func2(y) {
…
z = func3(y);
...
return val;
}
always@(posedge CLK) begin
if (!RES) XOUT <= 0;
else begin
case (IN)
4'b0001 : TMP <= 1;
4'b0010 : TMP <= 5;
4'b1100 : TMP <= 7;
default : TMP <= 0;
endcase
end
end
assign OUT = ~{REG[7:4],
ソフトは
書けるかな,,,
ハードも
書くの!?
データ通信は
どう設計しよう?
どれをどこで
処理するの??
ドライバは
どう使うの?
従来の協調設計ツール
12
• GUIベースの複数のツールを使いこなす必要がある
− 計算資源ごとにそれぞれ個別の開発知識が求められる
− HWや通信バス,アナログ回路の構成を決定した後でないと,
SWの設計を進めることができない
SW志向設計の考え方
• SW知識のみで協調システムを設計したい
− 高い抽象度でシステム全体を設計したい
面倒はなるべく減らしたい
− 様々なシステム構成を手軽に試行・合成したい
13
設計生産性の向上・開発期間の短縮に
• システム設計・合成フローとSW志向の入力記述
• SW/HW切分けと通信インタフェース
• 組込みリアルタイムシステム設計への対応
• ツールチェーン実装と設計空間探索への適用
プログラマブルSoCのための
協調設計環境
対象とするデバイス
• Xilinx社 Zynq-7000 All Programmable SoC
15
PS(プロセッシングシステム)
・ARM Cortex A9デュアルコア
・キャッシュ
・メインメモリ
・ペリフェラル
・…
PL(プログラマブルロジック)
・構成可能論理ブロック
・ディジタル信号処理ブロック
・ブロックメモリ
・…
ARM AMBA AXI:PSとPLを接続
ポート マスタ ポート数 用途
GP-AXI PS/PL 2/2 汎用
AXI-HP PL 4 メモリアクセス
AXI-ACP PL 1 キャッシュアクセス
プロトコル バースト転送 特徴
AXI4-Lite 不可 省リソース
AXI4 256回まで 大量データ向き
AXI4-Stream 無制限 ストリーミング特化
通
信
バ
ス
プログラマブルSoCにおける設計
16
プロセッサ FPGA
HW
HW
SW
SW
int_t main () {
a = func1(xxx);
b = func2(yyy);
c = a + b;
}
int_t func1(x) {
…
return val;
}
int_t func2(y) {
…
z = func3(y);
...
return val;
}
always@(posedge CLK) begin
if (!RES) XOUT <= 0;
else begin
case (IN)
4'b0001 : TMP <= 1;
4'b0010 : TMP <= 5;
4'b1100 : TMP <= 7;
default : TMP <= 0;
endcase
end
end
assign OUT = ~{REG[7:4],
ソフトは
書けるかな,,,
ハードも
書くの!?
データ通信は
どう設計しよう?
どれをどこで
処理するの??
通
信
バ
ス
SW
SW
オペレーティングシステム
SWORDSフレームワーク
17
FPGA
SW
アルゴリズムは
ソフトだけで記述する
HW
SWからHWを
自動合成する
インタフェース IF
レイヤ
通信経路も
自動合成する
IF
レイヤ
HWをSWと同じように
管理できるOSも提供する
SW
HW
プロセッサ
SWORDSの全体像
18
コ
ン
パ
イ
ル
HWタスク
HDL
HW
モジュール
SW
モジュール
資源情報
cfg
カーネルコード
ラッパータスク
C
SWタスク
IF情報付C
サービス
コール情報
SWタスク
C
cfgファイル
論
理
合
成
IF
合
成
タ
ス
ク
切
分
け
・
生
成
高
位
合
成
SW-IF情報
HWタスク
IF情報付C
設計記述
C
構成記述
JSON
SWORDSの入力0
19
コ
ン
パ
イ
ル
HWタスク
HDL
HW
モジュール
SW
モジュール
資源情報
cfg
カーネルコード
ラッパータスク
C
SWタスク
IF情報付C
サービス
コール情報
SWタスク
C
cfgファイル
論
理
合
成
IF
合
成
タ
ス
ク
切
分
け
・
生
成
高
位
合
成
SW-IF情報
HWタスク
IF情報付C
設計記述
C
構成記述
JSON
{
“software_tasks": [
{"name": “main”},
{"name": “func1”} ] ,
"hardware_tasks": [{
"name": ”func2",
"mode": "s_axilite",
"arguments": [{
"name": ”b",
"mode": "m_axi",
"bundle": "bundle_a",
"offset": "slave",
"direction": "in"
},{
"name": ”c",
"mode": "m_axi",
"bundle": "bundle_a",
"offset": "slave",
"direction": "in"
},{
"name": ”y",
"mode": "s_axilite",
"bundle": "bundle_b",
"direction": "out"
}],
"bundles": [{
"bundle": "bundle_a“,
"port": “ACP"
},{
"bundle": "bundle_b“,
"port": “GP0"
}}],
int_t main () {
func1(a, x);
func2(b, c, y);
z = x + y;
}
void func1(a, x) {
… = a;
x = ... ;
}
void func2(b, c, y) {
... = b
z = func3(c);
y = z + ...;
}
C言語だけで
システム設計を記述
SW実行する
関数を指定
HW実行する関数と
制御用プロトコルを
指定
引数毎に,
通信バンドルと
通信用プロトコル,
入出力方向を指定
通信バンドルを
接続するポートを
指定タスク・セマフォ等の
カーネル資源情報を記述
SWORDSのフロー
20
コ
ン
パ
イ
ル
HWタスク
HDL
HW
モジュール
SW
モジュール
資源情報
cfg
カーネルコード
ラッパータスク
C
SWタスク
IF情報付C
サービス
コール情報
SWタスク
C
cfgファイル
論
理
合
成
IF
合
成
タ
ス
ク
切
分
け
・
生
成
高
位
合
成
SW-IF情報
HWタスク
IF情報付C
設計記述
C
構成記述
JSON
(1) タスク切分け・
生成
(2) タスク・インタ
フェース合成
(3) 実行可能
モジュール合成
タスク切分け
• SW志向設計記述から構成情報で指定された関数を
HWタスクとして正しく切り分ける
• 切り分けルール
− エントリポイント(main)はSW
− 全タスクがSWまたはHW,もしくは両方になる
 全てのタスクは実装される
− HW化が指定されたタスクはSWとしない
− HW化するタスクが呼び出すタスクは
全てHW化される
− SWから呼び出されるタスクは,
SWまたはHW化が明示指定されたタスク
21
SW0
SW1 SW4
SW2
SW5
SW3
HW2
HW3
SW3’
通信インタフェース生成
• HWインタフェースレイヤ
− インターコネクトとAXIモジュールから構成
− 通信ポート:GP-AXI/AXI-HP/AXI-ACP
− 通信プロトコル:AXI4/AXI4-Lite/AXI4-Stream
• SWインタフェースレイヤ
− SWタスクからの呼び出しに応じてHWタスク実行を制御
22
PLPS
インタフェース
ポート
HW
インタフェース
レイヤ
HWタスク
SW
インタフェース
レイヤ
SWタスク ドライバ
インター
コネクト
インタフェースの構造と振る舞い
23
①HWタスク呼び出し
SWインタフェースレイヤを
介してHWタスクを呼び出す
②初回の呼び出しの
場合は初期化
③HWタスクがアイ
ドル状態か確認
④入力変数・アド
レスのセット
⑤HWタスク実行
開始命令の送信
⑥HWタスク実行中
AXI4プロトコルを介した
データ通信を行う
⑦出力データ・
返値の送信
⑧HWタスク終了の通知
(割込みorポーリング待ち)
リアルタイムシステム設計の対応
• TOPPERS/FMPカーネルを含めたシステム設計に対応
− ITRONアプリの設計作法でZynq上にリアルタイムシステムを合成
• HWタスクを管理するラッパータスクを生成
− サービスコールの処理や発行をラッパータスクが担う
− FMPカーネルがSWタスクと同様にHWタスクも管理できる
24
プロセッサ
バス
TOPPERS/
FMP
SW
タスク
ラッパー
タスク
FPGA
HW
タスク
(3)act_tsk
(2)act_tsk発行
(1)act_tsk
発行依頼
もちろん
逆も可能
サポートするサービスコール
25
分類 サービスコール 機能
タスク管理機能 act_tsk 他タスクを起動する
ext_tsk 自タスクを終了する
タスク付属同期機能 slp_tsk 自タスクを起床待ちに
wup_tsk 他タスクを起床させる
dly_tsk 自タスクを遅延させる
同期・通信機能 wai_sem セマフォを獲得する
sig_sem セマフォを返却する
時間管理機能 get_utm システム時刻を取得する
HWタスクの実行方式
1. 逐次実行:ラッパーとHWの状態を同期させて実行
2. 並列実行:起床待ちと割込みでSWタスクと並列動作
26
優先度関係と
処理順序が
保たれる
システム全体の
高速化が可能
処理順序を
考慮する
必要がある
セールスポイント
1. ソフトウェアの開発知識のみで協調設計が可能
− 組込みシステム開発の設計生産性の向上が期待
2. 様々なシステム構成の効率的な試行が可能
− 構成情報の記述修正だけでHWタスクや通信IFが容易に選択できる
− 設計空間探索手法の確立に繋がりうる
3. 多デバイスへの適用を想定した設計フロー
− 既存のツールのフロントエンドであり,移植性がある
4. リアルタイムOSを採用したシステム開発に対応
− タスク処理の並行化や時間管理の実現が容易になる
27
ツールチェーン実装
• 使用ツール(全て無償で入手可能)
• 実行方法(Windows cmd.exe上で動作)
$ swords.bat desing_file config_file [llvm-libfile]
28
ツール バージョン 用途
python 2.7.1
SW/HWタスク切分け・生成,
IF合成,各tclファイルの生成
clang 3.4以降 設計記述の解析
Vivado HLS 2015.4 HWタスクの高位合成
Vivado 2015.4 HWモジュールの論理合成
Xilinx SDK 2015.4 SWバイナリのコンパイル
github.com/tlk-emb/SWORDS
設計空間探索への適用
• 高性能な協調システムの
構成を高速に探索する
− 入力:設計記述および
探索空間の指定
− 出力:パレート最適となる
システム構成の解集合
− システム構成:
SW/HWの切分け,高位
合成最適化,通信IFの選択
− サンプリングの合成結果から
予測モデルを生成してその
精度を解析し,未合成のシス
テム構成の性能を見積もる
29
設計空間探索への適用
• 適用対象:一辺32の行列積演算
− 引数毎の通信方式:3*3種類
 GP + AXI4-Liteプロトコル
 ACP + AXI4プロトコル
 ACP + AXI4プロトコル,
バッファ変数にARRAY_PARTITION指示子を適用
− ループパイプライン化の選択:21種類
 パイプライン化しない
 内側のループに適用,
パイプライン間隔1~10
 中間のループに適用,
パイプライン間隔16~25
− 合計567通り (3*3*3*21)
30
設計空間探索への適用
• Zynq XC7Z020-1CLG484(ZedBoard搭載)
• サンプル群抽出における抽出個数:20個ずつ
31
全567個のうちの
平均140個の合成で
見積誤差は10%程度
(DSPを除く)
実行時間 LUT FF
BRAM DSP
• SW志向設計の方針と設計記述モデル
• 合成フローとメリット
• 現在の開発状況と適用事例
コンフィギュラブルLSIのための
協調設計環境
対象とするデバイス
• ローム社 フレキシブルプラットフォームLSI
33
Cortex-M0/M3
ARM APB BUS
デジタル回路
・各種タイマ
・GPIO
・UART, I2C
・PWM
・…
小規模FPGA アナログ回路
・各種DAC
・各種ADC
・コンパレータ
・各種アンプ
・…
アナログ回路の利点を
活用したIoTシステムを
1デバイスで実現可能
通
信
バ
ス
再掲:従来の協調設計
34
プロセッサ FPGA
HW
HW
SW
SW
アナログ回路
driver
SW
int_t main () {
a = func1(xxx);
b = func2(yyy);
c = a + b;
}
int_t func1(x) {
…
return val;
}
int_t func2(y) {
…
z = func3(y);
...
return val;
}
always@(posedge CLK) begin
if (!RES) XOUT <= 0;
else begin
case (IN)
4'b0001 : TMP <= 1;
4'b0010 : TMP <= 5;
4'b1100 : TMP <= 7;
default : TMP <= 0;
endcase
end
end
assign OUT = ~{REG[7:4],
ソフトは
書けるかな,,,
ハードも
書くの!?
データ通信は
どう設計しよう?
どれをどこで
処理するの??
ドライバは
どう使うの?
既存の設計フロー
35
入出力
ピン
アナログ
バス接続
回路構成
HW
モジュール
SW
モジュール
論
理
合
成
コ
ン
パ
イ
ル
配
線
・
回
路
設
定
SWF
生成
アナログ
コンポーネント
システム
クロック バス情報付
SWタスク
userRTL
記述
SWタスク
記述各種部品の選択・構成の
設定と回路接続の設計
構成情報・
配線情報の出力
IDE上でユーザ
プログラムの設計
既存ツールによる設計方法
36
GUIツール上で
各種部品の選択・設定と
接続の決定
GUIツール上で
各種部品の選択・構成の
設定と回路接続の設計
構成情報・
配線情報の出力
IDE上でユーザ
プログラムの設計
SW志向設計の方針
• 使用したい部品とそれらの接続の指定,
アプリ動作の設計は分けて記述する
− 「何をしたいか?」に注力して設計する
− 初期化や各種設定ルーチンは意識させない
• 部品の設定と接続はSW記法によって指定する
− アナログ回路を含む各種部品の使用部分は
テンプレートライブラリ関数によって記述する
 引数によって部品の構成を設定できる
− 部品の接続は関数の引数と返値で記述する
− 入出力ピンの接続は式で記述する
37
設計記述モデル
• 部品関数
− コンポーネント部品を表現する
− 引数と返値によって,部品構成の
選択や入出力端子の接続を記述する
 返値を持たないもの,
複数の接続ができるものもある
• ピン変数
− ボード上のピンまたはマイコンの
GPIOを表現する変数
− 入出力は区別しない(両用は不可)
• ネット変数
− 部品間/ピン間の接続を表現する
一時変数
38
#include “swordslib.h”
void setup(){
/* システムクロックの設定 */
swords_system(“HIGH”, “1”, “HIGH”);
/* 8bit Ref. DACの出⼒レベルの設定と接続 */
net1 = swords_refdac0(“200”);
IO1D = net1;
/* 12bit R2R DACの出⼒波形との設定と接続 */
net2 = swords_r2rdac(“LUT”, “6000”, “SIN”);
IO1A = net2;
/* コンパレータの⼊出⼒端⼦の接続 */
IO4A = swords_comp(net1,net2);
/* 12bit 逐次ADCの出⼒端⼦の設定と接続 */
net3 = IO1C;
swords_saradc(net3);
/* DIO1AをGPIOとして使⽤ */
swords_enable_GPIOB(DIO1A);
}
void loop() {
/* ADCの出⼒値の取得 */
adcdata = IO1C;
/* Ref. DACへの⼊⼒値の設定 */
IO1D = adcdata>>4;
/* 100msの遅延 */
swords_delay(100);
/* DIO1Aの値反転 */
blink = (blink ? false: true);
DIO1A = blink;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
設計記述モデル
• setup():
− 部品関数による設定と接続の記述
 引数:構成設定,入力端子の接続
 返値:出力端子の接続
− ピン変数・ネット変数:
 部品間・ピン間の接続
• loop():
− アプリ動作の記述
 ピン変数を介して,部品関数への
値設定/取得,ピン間の値送受
− main()から繰り返し実行される
 繰り返しの遅延も記述できる
39
#include “swordslib.h”
void setup(){
/* システムクロックの設定 */
swords_system(“HIGH”, “1”, “HIGH”);
/* 8bit Ref. DACの出⼒レベルの設定と接続 */
net1 = swords_refdac0(“200”);
IO1D = net1;
/* 12bit R2R DACの出⼒波形との設定と接続 */
net2 = swords_r2rdac(“LUT”, “6000”, “SIN”);
IO1A = net2;
/* コンパレータの⼊出⼒端⼦の接続 */
IO4A = swords_comp(net1,net2);
/* 12bit 逐次ADCの出⼒端⼦の設定と接続 */
net3 = IO1C;
swords_saradc(net3);
/* DIO1AをGPIOとして使⽤ */
swords_enable_GPIOB(DIO1A);
}
void loop() {
/* ADCの出⼒値の取得 */
adcdata = IO1C;
/* Ref. DACへの⼊⼒値の設定 */
IO1D = adcdata>>4;
/* 100msの遅延 */
swords_delay(100);
/* DIO1Aの値反転 */
blink = (blink ? false: true);
DIO1A = blink;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
SW志向の合成フロー
40
設計記述
C
構成記述
JSON
HWタスク
IF情報付C
アナログ回路
バス情報ファイル
HW
モジュール
SW
モジュール
論
理
合
成
コ
ン
パ
イ
ル
SWタスク
IF情報付C
SWフレーム
生成
IF・バス情報付
SWタスク
高
位
合
成
HWタスク
HDLタ
ス
ク
切
分
け
・
生
成
構成記述
生成
回路構成 XML
・アナログ回路設定
・入出力ピン設定
・回路間接続情報
部品関数やピン変数を用いた
設計記述のみを入力とする
回路構成の
詳細設定を
編集できる
回路構成は
自動生成される
アプリの
再設計は不要
loop() が切分けられて
自動変換される
SW志向設計のメリット
• SW設計記述だけで動かせる
− テキストファイルの軽微な修正で回路の設定や
接続を変更できる
− GUI上の細かな設定をする必要がない
• ピン変数の指定だけで値の設定・取得ができる
− 部品ごとの各種初期化やライブラリ関数を記述する
必要はない
− 部品端子のアナログとデジタルを考慮しなくてよい
41
現在の開発状況
• 使用ツール
− python 2.7以上
 pythonライブラリ:jsonschema, clang
− clang 3.4以上
• 実行方法(Windows cmd.exe上で動作)
$ swords4RM.py [-h] --gen-mode {json,xml,loop}
[--logging {debug,info,warning,error,critical}]
[--llvm-libdir LLVM_LIBDIR] [--llvm-libfile LLVM_LIBFILE]
design_file config_file
− json: 各回路の構成記述の生成
− xml: 回路情報(回路構成情報,接続情報)の生成
− loop: SWフレームおよびアプリ記述の生成
42
適用事例
43
フレキシブルプラット
フォームLSI搭載ボード
Kobuki
中バンパ
左バンパ
右バンパ
左モータ
右モータ
GPIO
GPIO
GPIO
赤外線
測距センサ
超音波
測距センサ
R2R-
DAC
R2R-
DAC
FTM
COMP
COMP
NEG
PGA
マイコン
REFDAC
まとめと今後の展望
• プログラマブルSoCのための協調設計環境
− SW志向でFPGAの恩恵を活用した高品質な
組込みリアルタイムシステムを設計できる
− 実用システムへの適用,多デバイス対応,設計空間
探索手法の改善等で,高機能化・有用化を進めていく
• コンフィギュラブルLSIのための協調設計環境
− SW志向で高機能なIoTシステムを設計できる
− 設計抽象度の向上,高位合成との連携を進めていく
− 適用事例を通して有用性を定量的に立証していく
• 本研究の成果はローム株式会社との共同研究に
よります.関係者の皆様に深く感謝いたします.
44

Contenu connexe

Tendances

Tendances (20)

200521material takahashi
200521material takahashi200521material takahashi
200521material takahashi
 
三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介
三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介
三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介
 
200625material naruse
200625material naruse200625material naruse
200625material naruse
 
論文紹介:「End-to-end Sequence Labeling via Bi-directional LSTM-CNNs-CRF」
論文紹介:「End-to-end Sequence Labeling via Bi-directional LSTM-CNNs-CRF」論文紹介:「End-to-end Sequence Labeling via Bi-directional LSTM-CNNs-CRF」
論文紹介:「End-to-end Sequence Labeling via Bi-directional LSTM-CNNs-CRF」
 
200730material fujita
200730material fujita200730material fujita
200730material fujita
 
200528material takahashi
200528material takahashi200528material takahashi
200528material takahashi
 
LT@Chainer Meetup
LT@Chainer MeetupLT@Chainer Meetup
LT@Chainer Meetup
 
第2回 配信講義 計算科学技術特論A (2021)
第2回 配信講義 計算科学技術特論A (2021) 第2回 配信講義 計算科学技術特論A (2021)
第2回 配信講義 計算科学技術特論A (2021)
 
El text.tokuron a(2019).katagiri190509
El text.tokuron a(2019).katagiri190509El text.tokuron a(2019).katagiri190509
El text.tokuron a(2019).katagiri190509
 
Tensor flow usergroup 2016 (公開版)
Tensor flow usergroup 2016 (公開版)Tensor flow usergroup 2016 (公開版)
Tensor flow usergroup 2016 (公開版)
 
ソフトウェア自動チューニング研究紹介
ソフトウェア自動チューニング研究紹介ソフトウェア自動チューニング研究紹介
ソフトウェア自動チューニング研究紹介
 
CMSI計算科学技術特論B(7) 大規模系での高速フーリエ変換2
CMSI計算科学技術特論B(7) 大規模系での高速フーリエ変換2CMSI計算科学技術特論B(7) 大規模系での高速フーリエ変換2
CMSI計算科学技術特論B(7) 大規模系での高速フーリエ変換2
 
ディープラーニングフレームワーク とChainerの実装
ディープラーニングフレームワーク とChainerの実装ディープラーニングフレームワーク とChainerの実装
ディープラーニングフレームワーク とChainerの実装
 
自動チューニングとビックデータ:機械学習の適用の可能性
自動チューニングとビックデータ:機械学習の適用の可能性自動チューニングとビックデータ:機械学習の適用の可能性
自動チューニングとビックデータ:機械学習の適用の可能性
 
El text.tokuron a(2019).watanabe190613
El text.tokuron a(2019).watanabe190613El text.tokuron a(2019).watanabe190613
El text.tokuron a(2019).watanabe190613
 
CMSI計算科学技術特論A(2) MPIの基礎
CMSI計算科学技術特論A(2) MPIの基礎CMSI計算科学技術特論A(2) MPIの基礎
CMSI計算科学技術特論A(2) MPIの基礎
 
第5回 配信講義 計算科学技術特論A(2021)
第5回 配信講義 計算科学技術特論A(2021)第5回 配信講義 計算科学技術特論A(2021)
第5回 配信講義 計算科学技術特論A(2021)
 
El text.tokuron a(2019).katagiri190425
El text.tokuron a(2019).katagiri190425El text.tokuron a(2019).katagiri190425
El text.tokuron a(2019).katagiri190425
 
PCL
PCLPCL
PCL
 
CMSI計算科学技術特論B(6) 大規模系での高速フーリエ変換1
CMSI計算科学技術特論B(6) 大規模系での高速フーリエ変換1CMSI計算科学技術特論B(6) 大規模系での高速フーリエ変換1
CMSI計算科学技術特論B(6) 大規模系での高速フーリエ変換1
 

Similaire à ソフトウェア志向の組込みシステム協調設計環境

seccamp2012 チューター発表
seccamp2012 チューター発表seccamp2012 チューター発表
seccamp2012 チューター発表
Hirotaka Kawata
 
[CB19] Semzhu-Project – 手で作る組込み向けハイパーバイザと攻撃検知手法の新しい世界 by 朱義文
[CB19] Semzhu-Project – 手で作る組込み向けハイパーバイザと攻撃検知手法の新しい世界 by  朱義文[CB19] Semzhu-Project – 手で作る組込み向けハイパーバイザと攻撃検知手法の新しい世界 by  朱義文
[CB19] Semzhu-Project – 手で作る組込み向けハイパーバイザと攻撃検知手法の新しい世界 by 朱義文
CODE BLUE
 
2010 icse-an analysis of the variability in forty preprocessor-based software...
2010 icse-an analysis of the variability in forty preprocessor-based software...2010 icse-an analysis of the variability in forty preprocessor-based software...
2010 icse-an analysis of the variability in forty preprocessor-based software...
n-yuki
 

Similaire à ソフトウェア志向の組込みシステム協調設計環境 (20)

ICCV 2019 論文紹介 (26 papers)
ICCV 2019 論文紹介 (26 papers)ICCV 2019 論文紹介 (26 papers)
ICCV 2019 論文紹介 (26 papers)
 
第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会
第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会
第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会
 
高位合成におけるC++テンプレートメタプログラミングの効果
高位合成におけるC++テンプレートメタプログラミングの効果高位合成におけるC++テンプレートメタプログラミングの効果
高位合成におけるC++テンプレートメタプログラミングの効果
 
seccamp2012 チューター発表
seccamp2012 チューター発表seccamp2012 チューター発表
seccamp2012 チューター発表
 
Polyphony の行く末(2018/3/3)
Polyphony の行く末(2018/3/3)Polyphony の行く末(2018/3/3)
Polyphony の行く末(2018/3/3)
 
ACRi HLSチャレンジ 高速化テクニック紹介
ACRi HLSチャレンジ 高速化テクニック紹介ACRi HLSチャレンジ 高速化テクニック紹介
ACRi HLSチャレンジ 高速化テクニック紹介
 
ADVENTUREの他のモジュール・関連プロジェクトの紹介
ADVENTUREの他のモジュール・関連プロジェクトの紹介ADVENTUREの他のモジュール・関連プロジェクトの紹介
ADVENTUREの他のモジュール・関連プロジェクトの紹介
 
GPU-FPGA 協調計算を記述するためのプログラミング環境に関する研究(HPC169 No.10)
GPU-FPGA 協調計算を記述するためのプログラミング環境に関する研究(HPC169 No.10)GPU-FPGA 協調計算を記述するためのプログラミング環境に関する研究(HPC169 No.10)
GPU-FPGA 協調計算を記述するためのプログラミング環境に関する研究(HPC169 No.10)
 
技術紹介: S2E: Selective Symbolic Execution Engine
技術紹介: S2E: Selective Symbolic Execution Engine技術紹介: S2E: Selective Symbolic Execution Engine
技術紹介: S2E: Selective Symbolic Execution Engine
 
[CB19] Semzhu-Project – 手で作る組込み向けハイパーバイザと攻撃検知手法の新しい世界 by 朱義文
[CB19] Semzhu-Project – 手で作る組込み向けハイパーバイザと攻撃検知手法の新しい世界 by  朱義文[CB19] Semzhu-Project – 手で作る組込み向けハイパーバイザと攻撃検知手法の新しい世界 by  朱義文
[CB19] Semzhu-Project – 手で作る組込み向けハイパーバイザと攻撃検知手法の新しい世界 by 朱義文
 
組込みSW開発技術研究会キックオフミーティング
組込みSW開発技術研究会キックオフミーティング組込みSW開発技術研究会キックオフミーティング
組込みSW開発技術研究会キックオフミーティング
 
20180109 titech lecture_ishizaki_public
20180109 titech lecture_ishizaki_public20180109 titech lecture_ishizaki_public
20180109 titech lecture_ishizaki_public
 
最先端NLP勉強会2017_ACL17
最先端NLP勉強会2017_ACL17最先端NLP勉強会2017_ACL17
最先端NLP勉強会2017_ACL17
 
PyCoRAMを用いたグラフ処理FPGAアクセラレータ
PyCoRAMを用いたグラフ処理FPGAアクセラレータPyCoRAMを用いたグラフ処理FPGAアクセラレータ
PyCoRAMを用いたグラフ処理FPGAアクセラレータ
 
2010 icse-an analysis of the variability in forty preprocessor-based software...
2010 icse-an analysis of the variability in forty preprocessor-based software...2010 icse-an analysis of the variability in forty preprocessor-based software...
2010 icse-an analysis of the variability in forty preprocessor-based software...
 
Prosym2012
Prosym2012Prosym2012
Prosym2012
 
Uart受信設計2013
Uart受信設計2013Uart受信設計2013
Uart受信設計2013
 
第11回 配信講義 計算科学技術特論B(2022)
第11回 配信講義 計算科学技術特論B(2022)第11回 配信講義 計算科学技術特論B(2022)
第11回 配信講義 計算科学技術特論B(2022)
 
kagami_comput2016_14
kagami_comput2016_14kagami_comput2016_14
kagami_comput2016_14
 
Reconf 201506
Reconf 201506Reconf 201506
Reconf 201506
 

Plus de Hideki Takase

関数型言語ElixirのIoTシステム開発への展開
関数型言語ElixirのIoTシステム開発への展開関数型言語ElixirのIoTシステム開発への展開
関数型言語ElixirのIoTシステム開発への展開
Hideki Takase
 
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~
Hideki Takase
 

Plus de Hideki Takase (20)

Rclex: A Library for Robotics meet Elixir
Rclex: A Library for Robotics meet ElixirRclex: A Library for Robotics meet Elixir
Rclex: A Library for Robotics meet Elixir
 
高い並列性能と耐障害性を持つElixirとNervesでIoTの新しいカタチを切り拓く
高い並列性能と耐障害性を持つElixirとNervesでIoTの新しいカタチを切り拓く高い並列性能と耐障害性を持つElixirとNervesでIoTの新しいカタチを切り拓く
高い並列性能と耐障害性を持つElixirとNervesでIoTの新しいカタチを切り拓く
 
関数型っぽくROSロボットプログラミング
関数型っぽくROSロボットプログラミング関数型っぽくROSロボットプログラミング
関数型っぽくROSロボットプログラミング
 
ROS 2 Client Library for E^2
ROS 2 Client Library for E^2ROS 2 Client Library for E^2
ROS 2 Client Library for E^2
 
Elixir/Nervesはナウでヤングなcoolなすごいやつ
Elixir/NervesはナウでヤングなcoolなすごいやつElixir/Nervesはナウでヤングなcoolなすごいやつ
Elixir/Nervesはナウでヤングなcoolなすごいやつ
 
関数型言語ElixirのIoTシステム開発への展開
関数型言語ElixirのIoTシステム開発への展開関数型言語ElixirのIoTシステム開発への展開
関数型言語ElixirのIoTシステム開発への展開
 
FPGAをロボット(ROS)で「やわらかく」使うには
FPGAをロボット(ROS)で「やわらかく」使うにはFPGAをロボット(ROS)で「やわらかく」使うには
FPGAをロボット(ROS)で「やわらかく」使うには
 
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
 
ElixirでIoT!?ナウでヤングでcoolなNervesフレームワーク
ElixirでIoT!?ナウでヤングでcoolなNervesフレームワークElixirでIoT!?ナウでヤングでcoolなNervesフレームワーク
ElixirでIoT!?ナウでヤングでcoolなNervesフレームワーク
 
Rclex: ElixirでROS!!
Rclex: ElixirでROS!!Rclex: ElixirでROS!!
Rclex: ElixirでROS!!
 
QoS for ROS 2 Dashing/Eloquent
QoS for ROS 2 Dashing/EloquentQoS for ROS 2 Dashing/Eloquent
QoS for ROS 2 Dashing/Eloquent
 
Nerves!? Elixir!?? 関数型言語でれっつIoT開発!!
Nerves!? Elixir!?? 関数型言語でれっつIoT開発!!Nerves!? Elixir!?? 関数型言語でれっつIoT開発!!
Nerves!? Elixir!?? 関数型言語でれっつIoT開発!!
 
ROSCon2019 参加報告:オーバビュー+α
ROSCon2019 参加報告:オーバビュー+αROSCon2019 参加報告:オーバビュー+α
ROSCon2019 参加報告:オーバビュー+α
 
ElixirでFPGAを設計する
ElixirでFPGAを設計するElixirでFPGAを設計する
ElixirでFPGAを設計する
 
つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜
つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜
つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜
 
ZytleBot: ROSベースの自律移動ロボットへのFPGAの統合に向けて
ZytleBot: ROSベースの自律移動ロボットへのFPGAの統合に向けてZytleBot: ROSベースの自律移動ロボットへのFPGAの統合に向けて
ZytleBot: ROSベースの自律移動ロボットへのFPGAの統合に向けて
 
Cockatrice: A Hardware Design Environment with Elixir
Cockatrice: A Hardware Design Environment with ElixirCockatrice: A Hardware Design Environment with Elixir
Cockatrice: A Hardware Design Environment with Elixir
 
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~
 
TOPPERSプロジェクトのご紹介@IoT ALGYAN
TOPPERSプロジェクトのご紹介@IoT ALGYANTOPPERSプロジェクトのご紹介@IoT ALGYAN
TOPPERSプロジェクトのご紹介@IoT ALGYAN
 
ElixirでFPGAハードウェアが作れちゃう,かも!!?
ElixirでFPGAハードウェアが作れちゃう,かも!!?ElixirでFPGAハードウェアが作れちゃう,かも!!?
ElixirでFPGAハードウェアが作れちゃう,かも!!?
 

ソフトウェア志向の組込みシステム協調設計環境

Notes de l'éditeur

  1. 凄く乱暴な定義をすれば,汎用コンピュータ以外の専用コンピュータ
  2. FPGAは基本論理セルが規則的に並ぶ構造となっています. セルの組み合わせと接続を変えることで,ある時は通信回路,動画処理エンジン,暗号回路,プロセッサにもなれる. ドワンゴさんのサーバでも動いているらしいです. 設計方法,プログラミングというとちょっと語弊がありますが,こんな言語で記述します.ぶっちゃけ私はこんなの書けないです. 最近ではそんな私のために,高位合成という技術が実用レベルになりつつあります.
  3. FPGAは基本論理セルが規則的に並ぶ構造となっています. セルの組み合わせと接続を変えることで,ある時は通信回路,動画処理エンジン,暗号回路,プロセッサにもなれる. ドワンゴさんのサーバでも動いているらしいです. 設計方法,プログラミングというとちょっと語弊がありますが,こんな言語で記述します.ぶっちゃけ私はこんなの書けないです. 最近ではそんな私のために,高位合成という技術が実用レベルになりつつあります.
  4. LB:論理回路を実現する論理要素 IOB:外部との信号の入出力を行う要素 SW, CB, Wire:それらを接続する配線要素
  5. 民生品はもちろん多いけども ネットワーク機器とか画像エンジンとか
  6. 協調設計:SWとHWの設計を連携させながら同時並行的に進める
  7. HDL書きたくない IF作りたくない 現在はZynqを対象に開発中 打倒SDSoC??SDSoCと仲良くなるツール
  8. ここまで10分でいけるか?
  9. さっさと入力の説明
  10. 構成情報の仕様の定義を行います. SWエンジニアが容易に記述可能なように,JSON形式を採用します. 構成情報の内容では,SW/HWで実行するタスク, HWタスクの引数のインタフェースを簡潔に指定できるようにします. 現状の実装では,1つのHWタスクのみの構成に対応しています.
  11. Stream通信も可能
  12. リアルタイムシステム設計にFPGAの恩恵を活かすことができる 既存資産のリアルタイムシステム設計を流用することも可能 HWタスク⇔SWタスクの双方向でサービスコール発行可能
  13. HWタスクとラッパータスクの実行状態を同期させる ラッパータスクはビジーウェイトする 全てSWタスクとした場合と処理順序が等しい HWタスクは中断できない 優先度逆転時の対処は設計者に任せる 並列実行 SWタスクとHWタスクを並列実行させる 起床待ちと割込みの利用によって実現 逐次実行よりも高速化が期待できる 処理順序が優先度通りにならないことがある
  14. 引数1つにつき3種類の選択肢とする:引数は3個
  15. CPUは30MHz,FPGAは1152LUT/20Kgates CypressのPSoCもこんな感じ
  16. 協調設計:SWとHWの設計を連携させながら同時並行的に進める
  17. シャープ測距モジュール GP2Y0E02A (アナログ出力) 超音波センサ(送受信セット)[UR1612MPR/UT1612MPR]