Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
VSP専用プロセッサ設計と実行エンジンIyokanについて
Search
VTb
February 08, 2020
Technology
0
250
VSP専用プロセッサ設計と実行エンジンIyokanについて
VTb
February 08, 2020
Tweet
Share
More Decks by VTb
See All by VTb
MR1を支えた Ethernet&ROS システム
pibvt
3
1.2k
3日間で作る フルスクラッチHTTPサーバー on STM32F767 Nucleo
pibvt
14
5.7k
Hello_UEFI_で学ぶC言語ポインタ.pdf
pibvt
0
140
64bit UEFIからxv6を起動してみた
pibvt
0
450
Other Decks in Technology
See All in Technology
AWS Media Services 最新サービスアップデート 2024
eijikominami
0
200
Adopting Jetpack Compose in Your Existing Project - GDG DevFest Bangkok 2024
akexorcist
0
110
B2B SaaSから見た最近のC#/.NETの進化
sansantech
PRO
0
760
Terraform未経験の御様に対してどの ように導⼊を進めていったか
tkikuchi
2
430
Terraform CI/CD パイプラインにおける AWS CodeCommit の代替手段
hiyanger
1
240
透過型SMTPプロキシによる送信メールの可観測性向上: Update Edition / Improved observability of outgoing emails with transparent smtp proxy: Update edition
linyows
2
210
オープンソースAIとは何か? --「オープンソースAIの定義 v1.0」詳細解説
shujisado
7
820
スクラム成熟度セルフチェックツールを作って得た学びとその活用法
coincheck_recruit
1
140
New Relicを活用したSREの最初のステップ / NRUG OKINAWA VOL.3
isaoshimizu
2
590
いざ、BSC討伐の旅
nikinusu
2
780
OCI Vault 概要
oracle4engineer
PRO
0
9.7k
Amazon CloudWatch Network Monitor のススメ
yuki_ink
1
200
Featured
See All Featured
Designing for Performance
lara
604
68k
Ruby is Unlike a Banana
tanoku
97
11k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
506
140k
The Invisible Side of Design
smashingmag
298
50k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5k
10 Git Anti Patterns You Should be Aware of
lemiorhan
654
59k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
159
15k
Imperfection Machines: The Place of Print at Facebook
scottboms
265
13k
Code Review Best Practice
trishagee
64
17k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.1k
Transcript
VSP専用プロセッサ設計 と実行エンジンについて 松本 直樹(@PiBVT) 2020/02/08 カーネル/VM探検隊@関西 10回目
Agenda • 自己紹介 • VSP専用プロセッサ設計について • 並列実行エンジン Iyokan について
自己紹介 松本 直樹 (@PiBVT) 京都大学工学部情報学科3回生 未踏プロジェクトでの担当 • VSP専用プロセッサ設計 • 実行エンジンの基本設計,試作実装
VSP専用プロセッサ設計について VSPはプロセッサ設計が必要 暗号処理はゲートレベルで行われる -> プロセッサ設計は平文と同様のものが利用できる FHEゲートの演算のコスト -> 出来る限りゲート数が少ない設計が必要
VSP専用プロセッサ設計について 出来る限り少ないゲート数,省ROM,RAM -> 専用のISAとそのプロセッサ設計を開発することに ※ROM,RAMはそれぞれ512byteでも20,000ゲート以上あるた め、全体のゲート規模にかなり影響がある
時系列でみるVSP専用プロセッサ設計 2019年6月 プロジェクト開始 7月 rv32k-garnet 開発中止 8月 rv16k-amethyst(RV16Kv2準拠 マルチサイクル)完成 9月 rv16k-aquamarine(RV16Kv2準拠
5段パイプライン)完成 10月 cahp-diamond(CAHPv3準拠 5段パイプライン)完成 2020年1月 cahp-emerald(CAHPv3準拠 スーパースカラ)完成
cahp-emeraldについて • VSP専用プロセッサ第5世代設計 • CAHPv3(16bit/24bit混合命令長) 準拠 • 5段パイプライン • 最大2命令同時発行インオーダースーパースカラ
• 約8,000ゲート(cahp-diamond が約4,000 ゲート) • IPC 1.1(cahp-diamondが0.78) • このままだと不採用の危機(ゲート規模的に)
cahp-emeraldのアーキテクチャ 5段パイプライン・インオーダースーパースカラ
混合命令長のつらさ • 16bit/24bitで偶数倍長の関係にないため、アライメントをまたぐ命 令アクセスが起こる • ジャンプでの命令フェッチで余計なストールが発生する • ゲート規模が膨らむ
• 32bitブロックでのROMアクセスを行ったとしてもブロック間をまたぐ 命令が存在する -> ブロック間をまたぐ命令アクセスを実現する機構が必要 混合命令長のつらさ その1
一度読み込んだブロックをキャッシュに保持し、ブロックをまたい だアクセスを実現 -> ジャンプが起きると....?
並列実行エンジン Iyokan について • 回路情報を元にFHEゲートを評価する並列実行エンジン • TFHEpp(CPU)/cuFHE(GPU)を暗号処理のバックエンドとして利 用可能 • verilogファイルからの回路合成は外部ツール(yosys)を利用
ゲートの評価順には依存関係がある • ネットリスト上のゲートは上流から下流へと順に評価する
ネットリストをDAG(有向非循環グラフ)で表現 1. 上流ノードを持たないノードを評価待ちとする 2. 評価待ちのノードを評価 3. 辺経由で下流のノードに評価済みであることを通知 4. 入力の上位ノードすべてが評価済みならノードを評価待ちとする 5.
評価待ちノードが存在する場合、2へ戻る
CPU/GPU対応 • CPU対応はライブラリのTFHEppで簡単に実現 -> しかし、AVX2等を使っても遅い -> V100などを用いたGPGPUで高速化した例がある • GPU対応で、ホスト,デバイス間のメモリ一貫性は? ->
毎回転送? -> すべてGPUオンメモリ?
CPU/GPU対応 • ゲートの出力値を保持する変数は高々数100KB • 一度転送すれば暗号処理自体は10ms程度処理にかかる • H2D,D2Hのメモリ転送の影響は限りなく小さい • かなりのCPUバウンドな処理のため、MPIでもスケールする...? •
CPUとGPUの両者を用いたスケジューラを開発中 毎回転送することにした