SlideShare a Scribd company logo
1 of 18
Download to read offline
俺ASIC
と
俺CPU“松竹V(しょうちくぶい)”
2023年1月15日
たけおか@AXE
@takeoka
日本の半導体 産業 復興!
技術者 不足をStop!日本の半導体 産業 復興!
•
OSSの開発ツールで、LSI 開発
●
無料ツールの使い手が増える → 技術者不足 解消!
●
半導体 設計 技術者
●
論理回路 設計 技術者
•
半導体 工場は、「お高くない」ものもある
●
65nm とか、安くて かなりいい
みんなのLSI
俺のASIC
LSI
LSI開発の民主化だっ
開発の民主化だっ!!!
!!!
•
Googleなどが、OSSを使用して、LSI開発の民主化を行っている。2020年ごろより
•
日本政府も、半導体産業 復興を行う
●
LSI開発者の裾野を広げる
●
零細企業でも、LSI設計ができる時代になった
●
Open EDA, OpenLANEを活用(Googleにならう)
●
OSSのハードウェア開発ツールを使用
•
専用LSIは、低消費電力=持続可能社会に貢献
●
汎用CPU, Intel x86は電力消費が大きすぎる
Googleがカスタム半導体の民主化・自由化を推進
Googleがカスタム半導体の民主化・自由化を推進
 GoogleがスポンサとなりMPWシャトル・サービスを、無料で提供
 MPW(Multi-project wafer):

さまざまな顧客からの異なる半導体チップを1枚のウェハで製
造する
 Skywater社で製造
 50万円〜100万円出せば、作ってくれる道筋もある

130nmプロセスのアナログ・デジタル混載LSIを作る
FOSSi(Free and Open Source Silicon Foundation)

無料のオープンデジタルハードウェア設計のエコシステムを支援

非営利団体

[FOSSi Dial-Up] Tim Ansell - Skywater PDK: Fully open source manufacturable
PDK for a 130nm process https://www.youtube.com/watch?v=EczW2IWdnOM

日本人 河崎氏は、NEDO資金を受け、実際に、LSIを開発した
※河崎氏は、RISC-V Foundation ボードメンバで、JASA RISC-V WGメンバでもある
回路検証
(icarus)
回路合成
(yosys)
STA
(vesta)
ロジック部開発フロー
OSS EDAに必要な
ライブラリ
↓
回路設計
(Editor)
OSSによるLSI開発のEDAフロー
StdCell Verilog model
StdCell .libファイル
StdCell Verilog Model
(vesta)
Place
(Graywolf)
Router
(Qroute)
STA
(vesta)
DRC/LVS
(klayout)
StdCell LEF
StdCell LEF
StdCell Verilog model
Technology file
●
OSS EDAに必要なライブラリは
Fabのデータから変換が必要
●
OpenRAM、PLL、アナログは別なフローになる
配線
確認
配置。このあたりにPDKが必要
PDKが、ついにOSSに
●
ある特定の半導体プロセスで回路設計を行う際に
必要な設計情報
●
トランジスタ配置の制約条件などが書かれている
GAFAなどが自社向け半導体の開発
に力を入れる理由

データセンタの消費電力 削減
 自社製 専用半導体で電力削減

設計技術だけで自社半導体はできる
 半導体工場レス
 RTL(デジタル論理)設計ができれば

専用アルゴリズム用LSI

オーダーメイドICは、FPGAでは不満
 FPGAは消費電力 大
 FPGAは遅い
国内
●
政府が、LSI産業 再興
– JASAにも、経産省から LSI 開発者 教育についてヒアリングが来て、私もJASA技術本部
長として応えました。
●
LSI開発者の裾野を広げたい
– 産業技術総合研究所なども、OpenEDAに注目
●
ふくおかIST(公益財団法人 福岡県産業・科学技術振興財団)
福岡システムLSI総合開発センター「システムLSI設計試作センター」
●
http://www.ist.or.jp/lsi/pg04_02.html
●
ここで使用されているツールはほとんどがOSS
– NEC Cyber Work Bench程度が商品

ベンチャー企業が半導体の設計ツールを安価で利用できる

LSI設計、 少量 試作できる
●
50〜100万円 あれば、LSIの少量生産ができる仕組みがある
ミニマルファブ
一般社団法人 ミニマルファブ推進機構
MINIMAL(Minimal Fab Promoting Organization)は、
半導体、MEMSなどマイクロデバイスの多品種少量生産を可能とする革新的な
産業システム(ミニマルファブ)の発展と普及を支援する世界唯一の団体です。
https://www.minimalfab.com/
●
半導体 1個を手作りで作れる
●
手間は掛かるが、費用は超安い
https://www.semiconportal.com/archive/editorial/conference/r
eport/130705-minimalfab.html?print
より引用
現在 開発中の オレのSoC
● 省電力、省メモリ
● ロボットの部品モジュールがローコストで簡単に作れる
● 論理推論加速 機構をRISC-Vコアに追加
– 特許申請中 (東京エレクトロンと共同申請)
– GnuPrologのコンパイルド・バイナリを加速
● ハードウェア・マルチスレッド機構
– OSソフトウェア一切なしで、スレッド切り替え
– ハードウェア・セマフォで排他/同期。LR/SCもある
– 外部ピンからの入力で、スレッド起床(ハードウェアのみで)
– 割り込みなし(割り込み相当の処理は、専用スレッドで)
● ROS2 ”
通信ハードウェア ROS2 rapper”を搭載
– CPUの助けなしにROS2通信
● 外部I/O: Ethernet I/F, 任意波形生成器(AWG(PWMにもなる)), GPIO
エッジデバイスでも
大脳的処理を!
OSプログラム・コード
OSワーキング・エリア
不要!
OS 不要!
オレ達のCPU「松竹V(しょうちくぶい)」
ROS2プロトコルを完全ハードウェア化
●
ソフトウェア技術者がハードウェア論理を書き、LSI化。現実に!
●
OSSとして、配布を準備中
●
LGPLと AXEプロプライエタリの、ダブル・ライセンスを検討中
●
CPU無しで、ロボットの部品モジュールができる
●
センサとROS2プロトコルHWだけで、センサ・モジュール
●
PWMとROS2プロトコルHWだけで、アクチュエータ・モジュール
●
アプリケーションはC言語で書いておけば、
すぐハードウェア論理に合成
●
ロボット部品が、ゴミのようなLSIでできる ← CPU不要
●
CPU脳の敗北
●
ハードウェアなので、堅牢かつ高速。そしてコンパクト
※ROS2ハードウェアには、コンフィギュレーション用のPROMがあることが望ましい
PWM
センサ
& ADC
ROS2
ハードウェア
ROS2
ハードウェア
Ether IF
+ Phy
Ether IF
+ Phy
ROS2
アプリ
(C言語記述)
ROS2
アプリ
(C言語記述)
ロボット司令
モジュール
AXEでは、ROS2プロトコルを完全ハードウェア化した”ROS2rapper”
Arty A7-35ボード
(xc7a35ti-csg324-1Lチップ)
において
FPGA使用資源
●
LUT: 33666
●
FF: 13087
最大周波数: 121.01MHz
送信パケット生成 所要時間:
●
IPデータグラム生成複数サイクル版:
●
14サイクル=140nsec@100MHz
●
IPデータグラム生成1サイクル板):
●
8サイクル=160nsec@50MHz
受信 処理時間:
●
46サイクル=460nsec@100MHz
GNU-Prolog実行の高速化
●
Lisp, Prologなどの高級言語は、動的に型チェックして、
手続きをディスパッチする
目標
● GNU-Prolog のコンパイルド・コードにおいて、Prolog節の
実行を高速化する
方策
●
レジスタ間接レジスタ指定命令を追加し、手続きディスパ
ッチを高速化する
● GNU-Prolog の WAM コードで
は、switch_on_term で 1つめの arity の型(変数/ア
トム/整数/リスト/構造体)によって分岐する
● 分岐先で各arityの値をチェックする
foo(1, a, X) :- bar(1, X).
foo(a, [c,d], X) :- bar(2, X).
foo([a,b], c(d), X) :- bar(3, X).
foo(a(b), 1, X) :- bar(4, X).
GNU-PrologのWAMコード
predicate(foo/3,1,static,private,monofile,global,[
switch_on_term(1,4,2,6,8),
label(1),
try_me_else(3),
label(2),
get_integer(1,0),
get_atom(a,1),
put_value(x(2),1),
put_integer(1,0),
execute(bar/2),
label(3),
retry_me_else(5),
label(4),
get_atom(a,0),
get_list(1),
unify_atom(c),
unify_list,
unify_atom(d),
unify_nil,
put_value(x(2),1),
put_integer(2,0),
execute(bar/2),
label(5),
retry_me_else(7),
label(6),
get_list(0),
unify_atom(a),
unify_list,
unify_atom(b),
unify_nil,
(以下略)
Pl_Switch_On_Term()の内容
CodePtr FC
Pl_Switch_On_Term(CodePtr c_var,
CodePtr c_atm, CodePtr c_int,
CodePtr c_lst, CodePtr c_stc)
{
WamWord word, tag_mask;
CodePtr codep;
DEREF(A(0), word, tag_mask);
A(0) = word;
if (tag_mask == TAG_INT_MASK)
codep = c_int;
else if (tag_mask == TAG_ATM_MASK)
codep = c_atm;
else if (tag_mask == TAG_LST_MASK)
codep = c_lst;
else if (tag_mask == TAG_STC_MASK)
codep = c_stc;
else /* REF or FDV */
codep = c_var;
return (codep) ? codep : ALTB(B);
}
● ランタイム関数 Pl_Switch_On_Term() では、1
つめのarityであるA(0)のタグ(下位3ビット)によ
って、次に実行する分岐先を返すようになって
いる
高速化対象: GNU-Prologの80x86(64bit)版オブジェクト(アセンブリ・コード)
● GNU-Prolog のアセンブリコードでは、WAM(Prolog中間 仮
装マシン)のswitch_on_termに対応するランタイム関数
Pl_Switch_On_Term() を呼んでいる
● その返り値でジャンプしている
ここで、
● レジスタ間接によるレジスタ指定ができる新命令を追加
○ 特にジャンプ命令
○ ロード命令、ストア命令
● 例えば、WAMコード switch_on_term をアセンブリ・コード
にする場合に、型を示すタグ(3bit)によって、レジスタ間接に
よって指定されたレジスタの値(アドレス)にジャンプすると
高速になる
● すなわち
call Pl_Switch_On_Term@PLT ;サブルーチン・コールなので、とても遅い
jmp *%rax
● を、下記1命令で置き換えて、高速化
branch_reg_indirect IREG ; pc ← pc + xreg[IREG]
X0_foo__a3:
movq Lpred1_1@GOTPCREL(%rip),%rdi
movq Lpred1_4@GOTPCREL(%rip),%rsi
movq Lpred1_2@GOTPCREL(%rip),%rdx
movq Lpred1_6@GOTPCREL(%rip),%rcx
movq Lpred1_8@GOTPCREL(%rip),%r8
call Pl_Switch_On_Term@PLT
jmp *%rax
Lpred1_1:
movq Lpred1_3@GOTPCREL(%rip),%rdi
call Pl_Create_Choice_Point3@PLT
Lpred1_2:
movq $15,%rdi
movq 0(%r12),%rsi
call Pl_Get_Integer_Tagged@PLT
test %rax,%rax
je fail
(略)
jmp X0_bar__a2@PLT
Lpred1_3:
movq Lpred1_5@GOTPCREL(%rip),%rdi
call Pl_Update_Choice_Point3@PLT
Lpred1_4:
movq ta@GOTPCREL(%rip),%rdi
movq 0(%rdi),%rdi
movq 0(%r12),%rsi
call Pl_Get_Atom_Tagged@PLT
test %rax,%rax
je fail
(略)
jmp X0_bar__a2@PLT
Lpred1_5:
movq Lpred1_7@GOTPCREL(%rip),%rdi
call Pl_Update_Choice_Point3@PLT
Lpred1_6:
movq 0(%r12),%rdi
call Pl_Get_List@PLT
test %rax,%rax
je fail
(以下略)
ここを、レジスタの値で指定した
レジスタの内容の番地に
jumpするようなコードに変更する
(コンパイラが新命令を使用するように変更)
新命令「 branch_reg_indirect %rax 」
で置き換えて、高速化
RISC-V 64bit Gnu Prolog コンパイルド・バイナリ
gplcでコンパイル
した native code
objdump -d の一部
00000000000096b8 <X0_ap__a3>:
96b8: 00000517 auipc a0,0x0
96bc: 02050513 addi a0,a0,32 # 96d8 <X0_ap__a3+0x20>
96c0: 00000597 auipc a1,0x0
96c4: 02458593 addi a1,a1,36 # 96e4 <X0_ap__a3+0x2c>
96c8: 00000617 auipc a2,0x0
96cc: 05460613 addi a2,a2,84 # 971c <X0_ap__a3+0x64>
96d0: 014900ef jal ra,996e4 <Pl_Switch_On_Term_Var_Atm_Lst>
96d4: 00050067 jr a0
96d8: 00000517 auipc a0,0x0
96dc: 04050513 addi a0,a0,64 # 9718 <X0_ap__a3+0x60>
976c: 00ab3823 sd a0,16(s6)
9770: f49ff06f j 96b8 <X0_ap__a3>
9774: 00000013 nop
%%% Prologソース
ap([],Y,Y).
ap([A|X],Y,[A|Z]) :- ap(X,Y,Z).
%% ap(X,Y,[a,b,c]).
レジスタ間接レジスタ指定命令
● レジスタ間接によるレジスタ指定ができる命令を追加
○ ジャンプ命令、ロード命令、ストア命令
● 例えば、WAMコード switch_on_term をアセンブリ・コードにする場合に、型
を示すタグ(3bit)によって、レジスタ間接によって指定されたレジスタの値
(アドレス)にジャンプすると高速になる
レジスタ間接レジスタ指定 命令

branch_reg_indirect IREG
pc ← pc + xreg[IREG] ; xreg[n]は、n番の汎用レジスタ
※オプションでra←pc を行う(Branch_and_Link, call)

jump_reg_indirect IREG1,REG2
pc ← xreg[IREG1] + REG2
※オプションでra←pc を行う(JAL,call)

mov_reg_regindirect dst,ireg
dst ← xreg[ireg]

mov_regindirect_reg ireg,src
xreg[ireg]←src
0x300000
0x400100
0x500000
:
6
x5
x6
x7
x28
x28
IREGがx28のときその内容
「6」でX6が指される。
参照の場合、実効値
0x400100
CPU脳をたたき直す 自由ASIC時代
●
「CPU脳」な人類を、パラダイムシフト
●
CPU抜き アーキテクチャを、すすめる
●
外からのデータは順番にやってくる
●
データの処理は、データフローのままに…!
●
データフロー = パイプライン
●
新しい細粒度 高並列アーキテクチャの時代
●
1port RAMをやめさせる、D-FFを使わせる
●
同時並列にバラバラにデータ・アクセスさせる
処理パス1
PWM
I2C(in) I2C(out)
処理パス2 処理パス3b
処理パス3a
※I2CはIn/Outは、通信線が共通なので、適切な調停(排他制御)を
メモリ
以上

More Related Content

What's hot

Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)Preferred Networks
 
OSS強化学習向けゲーム環境の動向
OSS強化学習向けゲーム環境の動向OSS強化学習向けゲーム環境の動向
OSS強化学習向けゲーム環境の動向gree_tech
 
GPU と PYTHON と、それから最近の NVIDIA
GPU と PYTHON と、それから最近の NVIDIAGPU と PYTHON と、それから最近の NVIDIA
GPU と PYTHON と、それから最近の NVIDIANVIDIA Japan
 
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能BuildKitの概要と最近の機能
BuildKitの概要と最近の機能Kohei Tokunaga
 
Jetson活用セミナー ROS2自律走行実現に向けて
Jetson活用セミナー ROS2自律走行実現に向けてJetson活用セミナー ROS2自律走行実現に向けて
Jetson活用セミナー ROS2自律走行実現に向けてFixstars Corporation
 
eBPFは何が嬉しいのか
eBPFは何が嬉しいのかeBPFは何が嬉しいのか
eBPFは何が嬉しいのかYutaro Hayakawa
 
PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)
PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)
PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)Preferred Networks
 
研究者のための Python による FPGA 入門
研究者のための Python による FPGA 入門研究者のための Python による FPGA 入門
研究者のための Python による FPGA 入門ryos36
 
Rust で RTOS を考える
Rust で RTOS を考えるRust で RTOS を考える
Rust で RTOS を考えるryuz88
 
SSII2019OS: 深層学習にかかる時間を短くしてみませんか? ~分散学習の勧め~
SSII2019OS: 深層学習にかかる時間を短くしてみませんか? ~分散学習の勧め~SSII2019OS: 深層学習にかかる時間を短くしてみませんか? ~分散学習の勧め~
SSII2019OS: 深層学習にかかる時間を短くしてみませんか? ~分散学習の勧め~SSII
 
Magnum IO GPUDirect Storage 最新情報
Magnum IO GPUDirect Storage 最新情報Magnum IO GPUDirect Storage 最新情報
Magnum IO GPUDirect Storage 最新情報NVIDIA Japan
 
Matlantisに込められた 技術・思想_高本_Matlantis User Conference
Matlantisに込められた 技術・思想_高本_Matlantis User ConferenceMatlantisに込められた 技術・思想_高本_Matlantis User Conference
Matlantisに込められた 技術・思想_高本_Matlantis User ConferenceMatlantis
 
tf,tf2完全理解
tf,tf2完全理解tf,tf2完全理解
tf,tf2完全理解Koji Terada
 
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021Preferred Networks
 
Intel RealSense for ROSConJP20221121.pdf
Intel RealSense for ROSConJP20221121.pdfIntel RealSense for ROSConJP20221121.pdf
Intel RealSense for ROSConJP20221121.pdfTakumi14
 
AIチップ戦国時代における深層学習モデルの推論の最適化と実用的な運用を可能にするソフトウェア技術について
AIチップ戦国時代における深層学習モデルの推論の最適化と実用的な運用を可能にするソフトウェア技術についてAIチップ戦国時代における深層学習モデルの推論の最適化と実用的な運用を可能にするソフトウェア技術について
AIチップ戦国時代における深層学習モデルの推論の最適化と実用的な運用を可能にするソフトウェア技術についてFixstars Corporation
 
[DL輪読会]A closer look at few shot classification
[DL輪読会]A closer look at few shot classification[DL輪読会]A closer look at few shot classification
[DL輪読会]A closer look at few shot classificationDeep Learning JP
 

What's hot (20)

Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
 
Android/iOS端末におけるエッジ推論のチューニング
Android/iOS端末におけるエッジ推論のチューニングAndroid/iOS端末におけるエッジ推論のチューニング
Android/iOS端末におけるエッジ推論のチューニング
 
OSS強化学習向けゲーム環境の動向
OSS強化学習向けゲーム環境の動向OSS強化学習向けゲーム環境の動向
OSS強化学習向けゲーム環境の動向
 
私とOSSの25年
私とOSSの25年私とOSSの25年
私とOSSの25年
 
GPU と PYTHON と、それから最近の NVIDIA
GPU と PYTHON と、それから最近の NVIDIAGPU と PYTHON と、それから最近の NVIDIA
GPU と PYTHON と、それから最近の NVIDIA
 
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
 
Jetson活用セミナー ROS2自律走行実現に向けて
Jetson活用セミナー ROS2自律走行実現に向けてJetson活用セミナー ROS2自律走行実現に向けて
Jetson活用セミナー ROS2自律走行実現に向けて
 
eBPFは何が嬉しいのか
eBPFは何が嬉しいのかeBPFは何が嬉しいのか
eBPFは何が嬉しいのか
 
PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)
PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)
PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)
 
ゲート方式量子コンピュータの概要
ゲート方式量子コンピュータの概要ゲート方式量子コンピュータの概要
ゲート方式量子コンピュータの概要
 
研究者のための Python による FPGA 入門
研究者のための Python による FPGA 入門研究者のための Python による FPGA 入門
研究者のための Python による FPGA 入門
 
Rust で RTOS を考える
Rust で RTOS を考えるRust で RTOS を考える
Rust で RTOS を考える
 
SSII2019OS: 深層学習にかかる時間を短くしてみませんか? ~分散学習の勧め~
SSII2019OS: 深層学習にかかる時間を短くしてみませんか? ~分散学習の勧め~SSII2019OS: 深層学習にかかる時間を短くしてみませんか? ~分散学習の勧め~
SSII2019OS: 深層学習にかかる時間を短くしてみませんか? ~分散学習の勧め~
 
Magnum IO GPUDirect Storage 最新情報
Magnum IO GPUDirect Storage 最新情報Magnum IO GPUDirect Storage 最新情報
Magnum IO GPUDirect Storage 最新情報
 
Matlantisに込められた 技術・思想_高本_Matlantis User Conference
Matlantisに込められた 技術・思想_高本_Matlantis User ConferenceMatlantisに込められた 技術・思想_高本_Matlantis User Conference
Matlantisに込められた 技術・思想_高本_Matlantis User Conference
 
tf,tf2完全理解
tf,tf2完全理解tf,tf2完全理解
tf,tf2完全理解
 
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
 
Intel RealSense for ROSConJP20221121.pdf
Intel RealSense for ROSConJP20221121.pdfIntel RealSense for ROSConJP20221121.pdf
Intel RealSense for ROSConJP20221121.pdf
 
AIチップ戦国時代における深層学習モデルの推論の最適化と実用的な運用を可能にするソフトウェア技術について
AIチップ戦国時代における深層学習モデルの推論の最適化と実用的な運用を可能にするソフトウェア技術についてAIチップ戦国時代における深層学習モデルの推論の最適化と実用的な運用を可能にするソフトウェア技術について
AIチップ戦国時代における深層学習モデルの推論の最適化と実用的な運用を可能にするソフトウェア技術について
 
[DL輪読会]A closer look at few shot classification
[DL輪読会]A closer look at few shot classification[DL輪読会]A closer look at few shot classification
[DL輪読会]A closer look at few shot classification
 

Similar to 俺ASICと俺CPU“松竹V(しょうちくぶい)”

HaskellではじめるCortex-M3組込みプログラミング
HaskellではじめるCortex-M3組込みプログラミングHaskellではじめるCortex-M3組込みプログラミング
HaskellではじめるCortex-M3組込みプログラミングKiwamu Okabe
 
io tつくるよ! LT [m5stackの拡張基板をつくったよ!」
io tつくるよ! LT [m5stackの拡張基板をつくったよ!」io tつくるよ! LT [m5stackの拡張基板をつくったよ!」
io tつくるよ! LT [m5stackの拡張基板をつくったよ!」Masawo Yamazaki
 
M5Stackの拡張基板を作ってjimmyに届けた話
M5Stackの拡張基板を作ってjimmyに届けた話M5Stackの拡張基板を作ってjimmyに届けた話
M5Stackの拡張基板を作ってjimmyに届けた話Masawo Yamazaki
 
C base design methodology with s dx and xilinx ml
C base design methodology with s dx and xilinx ml C base design methodology with s dx and xilinx ml
C base design methodology with s dx and xilinx ml ssuser3a4b8c
 
機械学習 / Deep Learning 大全 (6) Library編
機械学習 / Deep Learning 大全 (6) Library編機械学習 / Deep Learning 大全 (6) Library編
機械学習 / Deep Learning 大全 (6) Library編Daiyu Hatakeyama
 
第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会
第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会
第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会Hitoshi Sato
 
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)Mr. Vengineer
 
StackExchangeで見たシステムプログラミング案件
StackExchangeで見たシステムプログラミング案件StackExchangeで見たシステムプログラミング案件
StackExchangeで見たシステムプログラミング案件yaegashi
 
RTミドルウエア講習会2015
RTミドルウエア講習会2015RTミドルウエア講習会2015
RTミドルウエア講習会2015Yuki Suga
 
【関東GPGPU勉強会#3】OpenCVの新機能 UMatを先取りしよう
【関東GPGPU勉強会#3】OpenCVの新機能 UMatを先取りしよう【関東GPGPU勉強会#3】OpenCVの新機能 UMatを先取りしよう
【関東GPGPU勉強会#3】OpenCVの新機能 UMatを先取りしようYasuhiro Yoshimura
 
seccamp2012 チューター発表
seccamp2012 チューター発表seccamp2012 チューター発表
seccamp2012 チューター発表Hirotaka Kawata
 
プログラムを高速化する話Ⅱ 〜GPGPU編〜
プログラムを高速化する話Ⅱ 〜GPGPU編〜プログラムを高速化する話Ⅱ 〜GPGPU編〜
プログラムを高速化する話Ⅱ 〜GPGPU編〜京大 マイコンクラブ
 
Amazon Elasticsearch Service & Open Distro for Elasticsearch Meetup
Amazon Elasticsearch Service & Open Distro for Elasticsearch MeetupAmazon Elasticsearch Service & Open Distro for Elasticsearch Meetup
Amazon Elasticsearch Service & Open Distro for Elasticsearch MeetupHibino Hisashi
 
EmbulkのGCS/BigQuery周りのプラグインについて
EmbulkのGCS/BigQuery周りのプラグインについてEmbulkのGCS/BigQuery周りのプラグインについて
EmbulkのGCS/BigQuery周りのプラグインについてSatoshi Akama
 
M5Stack互換機を作った話
M5Stack互換機を作った話M5Stack互換機を作った話
M5Stack互換機を作った話Masawo Yamazaki
 
Matrix signal controller and BrainPad overview
Matrix signal controller and BrainPad overviewMatrix signal controller and BrainPad overview
Matrix signal controller and BrainPad overviewKouji Matsui
 
CCMSI計算科学技術特論A (2015) 第7回 線形代数演算ライブラリBLASとLAPACKの基礎と実践2
CCMSI計算科学技術特論A (2015) 第7回 線形代数演算ライブラリBLASとLAPACKの基礎と実践2CCMSI計算科学技術特論A (2015) 第7回 線形代数演算ライブラリBLASとLAPACKの基礎と実践2
CCMSI計算科学技術特論A (2015) 第7回 線形代数演算ライブラリBLASとLAPACKの基礎と実践2Computational Materials Science Initiative
 
OSC2013 Tokyo/Spring JOSUG
OSC2013 Tokyo/Spring JOSUGOSC2013 Tokyo/Spring JOSUG
OSC2013 Tokyo/Spring JOSUGHideki Saito
 

Similar to 俺ASICと俺CPU“松竹V(しょうちくぶい)” (20)

HaskellではじめるCortex-M3組込みプログラミング
HaskellではじめるCortex-M3組込みプログラミングHaskellではじめるCortex-M3組込みプログラミング
HaskellではじめるCortex-M3組込みプログラミング
 
io tつくるよ! LT [m5stackの拡張基板をつくったよ!」
io tつくるよ! LT [m5stackの拡張基板をつくったよ!」io tつくるよ! LT [m5stackの拡張基板をつくったよ!」
io tつくるよ! LT [m5stackの拡張基板をつくったよ!」
 
M5Stackの拡張基板を作ってjimmyに届けた話
M5Stackの拡張基板を作ってjimmyに届けた話M5Stackの拡張基板を作ってjimmyに届けた話
M5Stackの拡張基板を作ってjimmyに届けた話
 
C base design methodology with s dx and xilinx ml
C base design methodology with s dx and xilinx ml C base design methodology with s dx and xilinx ml
C base design methodology with s dx and xilinx ml
 
機械学習 / Deep Learning 大全 (6) Library編
機械学習 / Deep Learning 大全 (6) Library編機械学習 / Deep Learning 大全 (6) Library編
機械学習 / Deep Learning 大全 (6) Library編
 
第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会
第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会
第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会
 
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
 
StackExchangeで見たシステムプログラミング案件
StackExchangeで見たシステムプログラミング案件StackExchangeで見たシステムプログラミング案件
StackExchangeで見たシステムプログラミング案件
 
RTミドルウエア講習会2015
RTミドルウエア講習会2015RTミドルウエア講習会2015
RTミドルウエア講習会2015
 
【関東GPGPU勉強会#3】OpenCVの新機能 UMatを先取りしよう
【関東GPGPU勉強会#3】OpenCVの新機能 UMatを先取りしよう【関東GPGPU勉強会#3】OpenCVの新機能 UMatを先取りしよう
【関東GPGPU勉強会#3】OpenCVの新機能 UMatを先取りしよう
 
GTC Japan 2017
GTC Japan 2017GTC Japan 2017
GTC Japan 2017
 
seccamp2012 チューター発表
seccamp2012 チューター発表seccamp2012 チューター発表
seccamp2012 チューター発表
 
プログラムを高速化する話Ⅱ 〜GPGPU編〜
プログラムを高速化する話Ⅱ 〜GPGPU編〜プログラムを高速化する話Ⅱ 〜GPGPU編〜
プログラムを高速化する話Ⅱ 〜GPGPU編〜
 
Amazon Elasticsearch Service & Open Distro for Elasticsearch Meetup
Amazon Elasticsearch Service & Open Distro for Elasticsearch MeetupAmazon Elasticsearch Service & Open Distro for Elasticsearch Meetup
Amazon Elasticsearch Service & Open Distro for Elasticsearch Meetup
 
EmbulkのGCS/BigQuery周りのプラグインについて
EmbulkのGCS/BigQuery周りのプラグインについてEmbulkのGCS/BigQuery周りのプラグインについて
EmbulkのGCS/BigQuery周りのプラグインについて
 
M5Stack互換機を作った話
M5Stack互換機を作った話M5Stack互換機を作った話
M5Stack互換機を作った話
 
Matrix signal controller and BrainPad overview
Matrix signal controller and BrainPad overviewMatrix signal controller and BrainPad overview
Matrix signal controller and BrainPad overview
 
Imaocande LT
Imaocande LTImaocande LT
Imaocande LT
 
CCMSI計算科学技術特論A (2015) 第7回 線形代数演算ライブラリBLASとLAPACKの基礎と実践2
CCMSI計算科学技術特論A (2015) 第7回 線形代数演算ライブラリBLASとLAPACKの基礎と実践2CCMSI計算科学技術特論A (2015) 第7回 線形代数演算ライブラリBLASとLAPACKの基礎と実践2
CCMSI計算科学技術特論A (2015) 第7回 線形代数演算ライブラリBLASとLAPACKの基礎と実践2
 
OSC2013 Tokyo/Spring JOSUG
OSC2013 Tokyo/Spring JOSUGOSC2013 Tokyo/Spring JOSUG
OSC2013 Tokyo/Spring JOSUG
 

More from たけおか しょうぞう

いにしえ的ななにか、カニか? RISC-V picoRV32, e203 改造 オレオレ命令追加した
いにしえ的ななにか、カニか? RISC-V picoRV32, e203 改造 オレオレ命令追加したいにしえ的ななにか、カニか? RISC-V picoRV32, e203 改造 オレオレ命令追加した
いにしえ的ななにか、カニか? RISC-V picoRV32, e203 改造 オレオレ命令追加したたけおか しょうぞう
 
どうして昔の人は八進数でしゃべるのか?
どうして昔の人は八進数でしゃべるのか?どうして昔の人は八進数でしゃべるのか?
どうして昔の人は八進数でしゃべるのか?たけおか しょうぞう
 
無脳スマートスピーカを 越えレレレのレ
無脳スマートスピーカを 越えレレレのレ無脳スマートスピーカを 越えレレレのレ
無脳スマートスピーカを 越えレレレのレたけおか しょうぞう
 
昔の外付けキャッシュ & コヒーレント・キャッシュ
昔の外付けキャッシュ & コヒーレント・キャッシュ昔の外付けキャッシュ & コヒーレント・キャッシュ
昔の外付けキャッシュ & コヒーレント・キャッシュたけおか しょうぞう
 
Lispマシン ドキュメント和訳とか、 ちびLispとか
Lispマシン ドキュメント和訳とか、 ちびLispとかLispマシン ドキュメント和訳とか、 ちびLispとか
Lispマシン ドキュメント和訳とか、 ちびLispとかたけおか しょうぞう
 

More from たけおか しょうぞう (20)

いにしえ的ななにか、カニか? RISC-V picoRV32, e203 改造 オレオレ命令追加した
いにしえ的ななにか、カニか? RISC-V picoRV32, e203 改造 オレオレ命令追加したいにしえ的ななにか、カニか? RISC-V picoRV32, e203 改造 オレオレ命令追加した
いにしえ的ななにか、カニか? RISC-V picoRV32, e203 改造 オレオレ命令追加した
 
SOAR:Smalltalk on RISC
SOAR:Smalltalk on RISCSOAR:Smalltalk on RISC
SOAR:Smalltalk on RISC
 
RISC-Vの可能性
RISC-Vの可能性RISC-Vの可能性
RISC-Vの可能性
 
RISC-Vの可能性
RISC-Vの可能性RISC-Vの可能性
RISC-Vの可能性
 
どうして昔の人は八進数でしゃべるのか?
どうして昔の人は八進数でしゃべるのか?どうして昔の人は八進数でしゃべるのか?
どうして昔の人は八進数でしゃべるのか?
 
Riscv+fpga200606
Riscv+fpga200606Riscv+fpga200606
Riscv+fpga200606
 
Takep lpc1114-190614
Takep lpc1114-190614Takep lpc1114-190614
Takep lpc1114-190614
 
Takep lpc1114-190613
Takep lpc1114-190613Takep lpc1114-190613
Takep lpc1114-190613
 
初歩的な部品の知識
初歩的な部品の知識初歩的な部品の知識
初歩的な部品の知識
 
Takepino LPC1114
Takepino LPC1114Takepino LPC1114
Takepino LPC1114
 
Lisp_chibi_machine 190427
Lisp_chibi_machine 190427Lisp_chibi_machine 190427
Lisp_chibi_machine 190427
 
無脳スマートスピーカを 越えレレレのレ
無脳スマートスピーカを 越えレレレのレ無脳スマートスピーカを 越えレレレのレ
無脳スマートスピーカを 越えレレレのレ
 
Common Lisp ユーザへのScheme紹介
Common Lisp ユーザへのScheme紹介Common Lisp ユーザへのScheme紹介
Common Lisp ユーザへのScheme紹介
 
RISC-V User level ISA
RISC-V User level ISARISC-V User level ISA
RISC-V User level ISA
 
Lispマシン・シミュレータの紹介
Lispマシン・シミュレータの紹介Lispマシン・シミュレータの紹介
Lispマシン・シミュレータの紹介
 
昔の外付けキャッシュ & コヒーレント・キャッシュ
昔の外付けキャッシュ & コヒーレント・キャッシュ昔の外付けキャッシュ & コヒーレント・キャッシュ
昔の外付けキャッシュ & コヒーレント・キャッシュ
 
Ichigojam ossc-170819
Ichigojam ossc-170819Ichigojam ossc-170819
Ichigojam ossc-170819
 
大昔のMMU
大昔のMMU大昔のMMU
大昔のMMU
 
Lispマシン ドキュメント和訳とか、 ちびLispとか
Lispマシン ドキュメント和訳とか、 ちびLispとかLispマシン ドキュメント和訳とか、 ちびLispとか
Lispマシン ドキュメント和訳とか、 ちびLispとか
 
Mt basic as-os_on_danbot
Mt basic as-os_on_danbotMt basic as-os_on_danbot
Mt basic as-os_on_danbot
 

Recently uploaded

自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 

Recently uploaded (8)

自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 

俺ASICと俺CPU“松竹V(しょうちくぶい)”

  • 2. 日本の半導体 産業 復興! 技術者 不足をStop!日本の半導体 産業 復興! • OSSの開発ツールで、LSI 開発 ● 無料ツールの使い手が増える → 技術者不足 解消! ● 半導体 設計 技術者 ● 論理回路 設計 技術者 • 半導体 工場は、「お高くない」ものもある ● 65nm とか、安くて かなりいい みんなのLSI 俺のASIC LSI LSI開発の民主化だっ 開発の民主化だっ!!! !!! • Googleなどが、OSSを使用して、LSI開発の民主化を行っている。2020年ごろより • 日本政府も、半導体産業 復興を行う ● LSI開発者の裾野を広げる ● 零細企業でも、LSI設計ができる時代になった ● Open EDA, OpenLANEを活用(Googleにならう) ● OSSのハードウェア開発ツールを使用 • 専用LSIは、低消費電力=持続可能社会に貢献 ● 汎用CPU, Intel x86は電力消費が大きすぎる Googleがカスタム半導体の民主化・自由化を推進
  • 3. Googleがカスタム半導体の民主化・自由化を推進  GoogleがスポンサとなりMPWシャトル・サービスを、無料で提供  MPW(Multi-project wafer):  さまざまな顧客からの異なる半導体チップを1枚のウェハで製 造する  Skywater社で製造  50万円〜100万円出せば、作ってくれる道筋もある  130nmプロセスのアナログ・デジタル混載LSIを作る FOSSi(Free and Open Source Silicon Foundation)  無料のオープンデジタルハードウェア設計のエコシステムを支援  非営利団体  [FOSSi Dial-Up] Tim Ansell - Skywater PDK: Fully open source manufacturable PDK for a 130nm process https://www.youtube.com/watch?v=EczW2IWdnOM  日本人 河崎氏は、NEDO資金を受け、実際に、LSIを開発した ※河崎氏は、RISC-V Foundation ボードメンバで、JASA RISC-V WGメンバでもある
  • 4. 回路検証 (icarus) 回路合成 (yosys) STA (vesta) ロジック部開発フロー OSS EDAに必要な ライブラリ ↓ 回路設計 (Editor) OSSによるLSI開発のEDAフロー StdCell Verilog model StdCell .libファイル StdCell Verilog Model (vesta) Place (Graywolf) Router (Qroute) STA (vesta) DRC/LVS (klayout) StdCell LEF StdCell LEF StdCell Verilog model Technology file ● OSS EDAに必要なライブラリは Fabのデータから変換が必要 ● OpenRAM、PLL、アナログは別なフローになる 配線 確認 配置。このあたりにPDKが必要 PDKが、ついにOSSに ● ある特定の半導体プロセスで回路設計を行う際に 必要な設計情報 ● トランジスタ配置の制約条件などが書かれている
  • 5. GAFAなどが自社向け半導体の開発 に力を入れる理由  データセンタの消費電力 削減  自社製 専用半導体で電力削減  設計技術だけで自社半導体はできる  半導体工場レス  RTL(デジタル論理)設計ができれば  専用アルゴリズム用LSI  オーダーメイドICは、FPGAでは不満  FPGAは消費電力 大  FPGAは遅い
  • 6. 国内 ● 政府が、LSI産業 再興 – JASAにも、経産省から LSI 開発者 教育についてヒアリングが来て、私もJASA技術本部 長として応えました。 ● LSI開発者の裾野を広げたい – 産業技術総合研究所なども、OpenEDAに注目 ● ふくおかIST(公益財団法人 福岡県産業・科学技術振興財団) 福岡システムLSI総合開発センター「システムLSI設計試作センター」 ● http://www.ist.or.jp/lsi/pg04_02.html ● ここで使用されているツールはほとんどがOSS – NEC Cyber Work Bench程度が商品  ベンチャー企業が半導体の設計ツールを安価で利用できる  LSI設計、 少量 試作できる ● 50〜100万円 あれば、LSIの少量生産ができる仕組みがある
  • 7. ミニマルファブ 一般社団法人 ミニマルファブ推進機構 MINIMAL(Minimal Fab Promoting Organization)は、 半導体、MEMSなどマイクロデバイスの多品種少量生産を可能とする革新的な 産業システム(ミニマルファブ)の発展と普及を支援する世界唯一の団体です。 https://www.minimalfab.com/ ● 半導体 1個を手作りで作れる ● 手間は掛かるが、費用は超安い https://www.semiconportal.com/archive/editorial/conference/r eport/130705-minimalfab.html?print より引用
  • 8. 現在 開発中の オレのSoC ● 省電力、省メモリ ● ロボットの部品モジュールがローコストで簡単に作れる ● 論理推論加速 機構をRISC-Vコアに追加 – 特許申請中 (東京エレクトロンと共同申請) – GnuPrologのコンパイルド・バイナリを加速 ● ハードウェア・マルチスレッド機構 – OSソフトウェア一切なしで、スレッド切り替え – ハードウェア・セマフォで排他/同期。LR/SCもある – 外部ピンからの入力で、スレッド起床(ハードウェアのみで) – 割り込みなし(割り込み相当の処理は、専用スレッドで) ● ROS2 ” 通信ハードウェア ROS2 rapper”を搭載 – CPUの助けなしにROS2通信 ● 外部I/O: Ethernet I/F, 任意波形生成器(AWG(PWMにもなる)), GPIO エッジデバイスでも 大脳的処理を! OSプログラム・コード OSワーキング・エリア 不要! OS 不要! オレ達のCPU「松竹V(しょうちくぶい)」
  • 9. ROS2プロトコルを完全ハードウェア化 ● ソフトウェア技術者がハードウェア論理を書き、LSI化。現実に! ● OSSとして、配布を準備中 ● LGPLと AXEプロプライエタリの、ダブル・ライセンスを検討中 ● CPU無しで、ロボットの部品モジュールができる ● センサとROS2プロトコルHWだけで、センサ・モジュール ● PWMとROS2プロトコルHWだけで、アクチュエータ・モジュール ● アプリケーションはC言語で書いておけば、 すぐハードウェア論理に合成 ● ロボット部品が、ゴミのようなLSIでできる ← CPU不要 ● CPU脳の敗北 ● ハードウェアなので、堅牢かつ高速。そしてコンパクト ※ROS2ハードウェアには、コンフィギュレーション用のPROMがあることが望ましい PWM センサ & ADC ROS2 ハードウェア ROS2 ハードウェア Ether IF + Phy Ether IF + Phy ROS2 アプリ (C言語記述) ROS2 アプリ (C言語記述) ロボット司令 モジュール AXEでは、ROS2プロトコルを完全ハードウェア化した”ROS2rapper” Arty A7-35ボード (xc7a35ti-csg324-1Lチップ) において FPGA使用資源 ● LUT: 33666 ● FF: 13087 最大周波数: 121.01MHz 送信パケット生成 所要時間: ● IPデータグラム生成複数サイクル版: ● 14サイクル=140nsec@100MHz ● IPデータグラム生成1サイクル板): ● 8サイクル=160nsec@50MHz 受信 処理時間: ● 46サイクル=460nsec@100MHz
  • 10. GNU-Prolog実行の高速化 ● Lisp, Prologなどの高級言語は、動的に型チェックして、 手続きをディスパッチする 目標 ● GNU-Prolog のコンパイルド・コードにおいて、Prolog節の 実行を高速化する 方策 ● レジスタ間接レジスタ指定命令を追加し、手続きディスパ ッチを高速化する
  • 11. ● GNU-Prolog の WAM コードで は、switch_on_term で 1つめの arity の型(変数/ア トム/整数/リスト/構造体)によって分岐する ● 分岐先で各arityの値をチェックする foo(1, a, X) :- bar(1, X). foo(a, [c,d], X) :- bar(2, X). foo([a,b], c(d), X) :- bar(3, X). foo(a(b), 1, X) :- bar(4, X). GNU-PrologのWAMコード predicate(foo/3,1,static,private,monofile,global,[ switch_on_term(1,4,2,6,8), label(1), try_me_else(3), label(2), get_integer(1,0), get_atom(a,1), put_value(x(2),1), put_integer(1,0), execute(bar/2), label(3), retry_me_else(5), label(4), get_atom(a,0), get_list(1), unify_atom(c), unify_list, unify_atom(d), unify_nil, put_value(x(2),1), put_integer(2,0), execute(bar/2), label(5), retry_me_else(7), label(6), get_list(0), unify_atom(a), unify_list, unify_atom(b), unify_nil, (以下略)
  • 12. Pl_Switch_On_Term()の内容 CodePtr FC Pl_Switch_On_Term(CodePtr c_var, CodePtr c_atm, CodePtr c_int, CodePtr c_lst, CodePtr c_stc) { WamWord word, tag_mask; CodePtr codep; DEREF(A(0), word, tag_mask); A(0) = word; if (tag_mask == TAG_INT_MASK) codep = c_int; else if (tag_mask == TAG_ATM_MASK) codep = c_atm; else if (tag_mask == TAG_LST_MASK) codep = c_lst; else if (tag_mask == TAG_STC_MASK) codep = c_stc; else /* REF or FDV */ codep = c_var; return (codep) ? codep : ALTB(B); } ● ランタイム関数 Pl_Switch_On_Term() では、1 つめのarityであるA(0)のタグ(下位3ビット)によ って、次に実行する分岐先を返すようになって いる
  • 13. 高速化対象: GNU-Prologの80x86(64bit)版オブジェクト(アセンブリ・コード) ● GNU-Prolog のアセンブリコードでは、WAM(Prolog中間 仮 装マシン)のswitch_on_termに対応するランタイム関数 Pl_Switch_On_Term() を呼んでいる ● その返り値でジャンプしている ここで、 ● レジスタ間接によるレジスタ指定ができる新命令を追加 ○ 特にジャンプ命令 ○ ロード命令、ストア命令 ● 例えば、WAMコード switch_on_term をアセンブリ・コード にする場合に、型を示すタグ(3bit)によって、レジスタ間接に よって指定されたレジスタの値(アドレス)にジャンプすると 高速になる ● すなわち call Pl_Switch_On_Term@PLT ;サブルーチン・コールなので、とても遅い jmp *%rax ● を、下記1命令で置き換えて、高速化 branch_reg_indirect IREG ; pc ← pc + xreg[IREG] X0_foo__a3: movq Lpred1_1@GOTPCREL(%rip),%rdi movq Lpred1_4@GOTPCREL(%rip),%rsi movq Lpred1_2@GOTPCREL(%rip),%rdx movq Lpred1_6@GOTPCREL(%rip),%rcx movq Lpred1_8@GOTPCREL(%rip),%r8 call Pl_Switch_On_Term@PLT jmp *%rax Lpred1_1: movq Lpred1_3@GOTPCREL(%rip),%rdi call Pl_Create_Choice_Point3@PLT Lpred1_2: movq $15,%rdi movq 0(%r12),%rsi call Pl_Get_Integer_Tagged@PLT test %rax,%rax je fail (略) jmp X0_bar__a2@PLT Lpred1_3: movq Lpred1_5@GOTPCREL(%rip),%rdi call Pl_Update_Choice_Point3@PLT Lpred1_4: movq ta@GOTPCREL(%rip),%rdi movq 0(%rdi),%rdi movq 0(%r12),%rsi call Pl_Get_Atom_Tagged@PLT test %rax,%rax je fail (略) jmp X0_bar__a2@PLT Lpred1_5: movq Lpred1_7@GOTPCREL(%rip),%rdi call Pl_Update_Choice_Point3@PLT Lpred1_6: movq 0(%r12),%rdi call Pl_Get_List@PLT test %rax,%rax je fail (以下略) ここを、レジスタの値で指定した レジスタの内容の番地に jumpするようなコードに変更する (コンパイラが新命令を使用するように変更) 新命令「 branch_reg_indirect %rax 」 で置き換えて、高速化
  • 14. RISC-V 64bit Gnu Prolog コンパイルド・バイナリ gplcでコンパイル した native code objdump -d の一部 00000000000096b8 <X0_ap__a3>: 96b8: 00000517 auipc a0,0x0 96bc: 02050513 addi a0,a0,32 # 96d8 <X0_ap__a3+0x20> 96c0: 00000597 auipc a1,0x0 96c4: 02458593 addi a1,a1,36 # 96e4 <X0_ap__a3+0x2c> 96c8: 00000617 auipc a2,0x0 96cc: 05460613 addi a2,a2,84 # 971c <X0_ap__a3+0x64> 96d0: 014900ef jal ra,996e4 <Pl_Switch_On_Term_Var_Atm_Lst> 96d4: 00050067 jr a0 96d8: 00000517 auipc a0,0x0 96dc: 04050513 addi a0,a0,64 # 9718 <X0_ap__a3+0x60> 976c: 00ab3823 sd a0,16(s6) 9770: f49ff06f j 96b8 <X0_ap__a3> 9774: 00000013 nop %%% Prologソース ap([],Y,Y). ap([A|X],Y,[A|Z]) :- ap(X,Y,Z). %% ap(X,Y,[a,b,c]).
  • 15. レジスタ間接レジスタ指定命令 ● レジスタ間接によるレジスタ指定ができる命令を追加 ○ ジャンプ命令、ロード命令、ストア命令 ● 例えば、WAMコード switch_on_term をアセンブリ・コードにする場合に、型 を示すタグ(3bit)によって、レジスタ間接によって指定されたレジスタの値 (アドレス)にジャンプすると高速になる
  • 16. レジスタ間接レジスタ指定 命令  branch_reg_indirect IREG pc ← pc + xreg[IREG] ; xreg[n]は、n番の汎用レジスタ ※オプションでra←pc を行う(Branch_and_Link, call)  jump_reg_indirect IREG1,REG2 pc ← xreg[IREG1] + REG2 ※オプションでra←pc を行う(JAL,call)  mov_reg_regindirect dst,ireg dst ← xreg[ireg]  mov_regindirect_reg ireg,src xreg[ireg]←src 0x300000 0x400100 0x500000 : 6 x5 x6 x7 x28 x28 IREGがx28のときその内容 「6」でX6が指される。 参照の場合、実効値 0x400100
  • 17. CPU脳をたたき直す 自由ASIC時代 ● 「CPU脳」な人類を、パラダイムシフト ● CPU抜き アーキテクチャを、すすめる ● 外からのデータは順番にやってくる ● データの処理は、データフローのままに…! ● データフロー = パイプライン ● 新しい細粒度 高並列アーキテクチャの時代 ● 1port RAMをやめさせる、D-FFを使わせる ● 同時並列にバラバラにデータ・アクセスさせる 処理パス1 PWM I2C(in) I2C(out) 処理パス2 処理パス3b 処理パス3a ※I2CはIn/Outは、通信線が共通なので、適切な調停(排他制御)を メモリ