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
test
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
a1933b51019
February 14, 2024
Design
0
110
test
for test
a1933b51019
February 14, 2024
Tweet
Share
More Decks by a1933b51019
See All by a1933b51019
myread
chungvlong
0
31
Other Decks in Design
See All in Design
AI情報に溺れながら、それでも頑張って泳ぐための思考法
yoriss67
0
120
TUNAG BOOK 2024
stmn
PRO
0
1.4k
組織はみんなでつくる。デザイナーが仕掛ける急拡大する組織のカルチャーづくり
mkasumi
0
1.1k
Emmy's Artwork
mcksmith
0
190
生成AIの不確実性を価値に変える、「ビズリーチ」の体験設計 / KNOTS2026
visional_engineering_and_design
4
650
組織の右腕として共創する ー デザインと経営の二つの視点から見えた、新しい支援のかたち/ Designship2025_Nishimura
root_recruit
0
280
コムデマネージャーがプロダクトデザインに挑戦した。むずかしくて楽しかった。
payatsusan213
0
190
OJTで学んだ 「心を動かす」ファシリテーション
saki822
1
230
第18回サイゼミ
lw
1
3.3k
新卒2年目デザイナーが、UX検定基礎にチャレンジした話
designer_no_pon
0
1.1k
ユーザー像を「みてね」らしく可視化する 家族アルバムみてねUXリサーチチームの取り組み
mixi_design
PRO
3
710
30分でわかるインサイトマネジメント(2025年12月バージョン)
centou
1
300
Featured
See All Featured
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.8k
What's in a price? How to price your products and services
michaelherold
247
13k
Believing is Seeing
oripsolob
1
53
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
160
BBQ
matthewcrist
89
10k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.1k
The SEO identity crisis: Don't let AI make you average
varn
0
64
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
80
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Embracing the Ebb and Flow
colly
88
5k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Transcript
File read PHSIM
Case •12KB file •Read 2K ~ 10K file data to
a 8K user buf Virt user buffer physical user buffer Virt data block physical user buffer Page table Share buffer dpu cpu 共享
Virt_buf Virt_data_block Virt_buf 為傳入的參數, 在此read operation中user buffer 的目的地vaddr Virt_data_block 為要讀data的起始virt
addr Filesystem (CPU)
Virt_buf Virt_data_block 使用get user page觸發page fault,使virt user buffer產生對應的physical user buffer
page Filesystem (CPU)
Virt_buf Virt_data_block Pim driver(CPU) Virt_bufxxx Pgd 取得包含virt_buf的pgd指針位置(取得最上層的表的位置) pgd,並填入shared buf
Virt_buf Virt_data_block Pim driver(CPU) Virt_bufxxx Pgd 取得包含virt_buf的pgd指針位置(取得最上層的表的位置) pgd,並填入shared buf pgd
Virt_buf Virt_data_block Pim driver(CPU) 通過計算取得phys_data_block,並填入shared buffer pgd phys_data_block=Virt_data_block- offset
Virt_buf Virt_data_block Pim driver(CPU) 通過計算取得phys_data_block,並填入shared buffer pgd (src)phys_data_block phys_data_block phys_data_block=Virt_data_block-
offset
Virt_buf Virt_data_block Pim driver(CPU) 填入dst (virt_buf)和size和command type pgd (src)phys_data_block Size(8K)
(dst) virt_buf read phys_data_block
Virt_buf Virt_data_block Pim kernel(DPU) 通過pgd和virt_buf找到對應的phys_buf pgd (src)phys_data_block Size(8K) (dst) virt_buf
read phys_data_block Virt_buf phys_buf Pgd
Virt_buf Virt_data_block Pim kernel(DPU) DPU通過pgd和virt_buf找到對應的phys_buf pgd (src)phys_data_block Size(8K) (dst) virt_buf
read phys_data_block Virt_buf phys_buf Pgd phys_buf
Virt_buf Virt_data_block Pim kernel(DPU) Copy data (到page boundary ) clflush(phys_buf,
2K); memcpy_v(phys_buf, phys_data_block, 2K); pgd (src)phys_data_block Size(8K) (dst) virt_buf read phys_data_block phys_buf DPU
Virt_buf Virt_data_block Pim kernel(DPU) Copy data (到page boundary ) clflush(phys_buf,
2K); memcpy_v(phys_buf, phys_data_block, 2K); pgd (src)phys_data_block Size(8K) (dst) virt_buf read phys_data_block phys_buf DPU
Virt_buf Virt_data_block Pim kernel(DPU) pgd (src)phys_data_block Size(8K) (dst) virt_buf read
phys_data_block phys_buf Virt_buf+2K phys_buf+2K Pgd 通過pgd和(virt_buf+2K)查表找到對應的phys_buf+2K(此處似乎不必要) phys_buf+2K Virt_buf+2K
Virt_buf Virt_data_block Pim kernel(DPU) Copy data (到page boundary ) clflush(phys_buf+2K,
2K); memcpy_v(phys_buf+2K, phys_data_block+2K, 2K); pgd (src)phys_data_block Size(8K) (dst) virt_buf read phys_data_block phys_buf DPU phys_buf+2K Virt_buf+2K
Virt_buf Virt_data_block Pim kernel(DPU) Copy data (到page boundary ) clflush(phys_buf+2K,
2K); memcpy_v(phys_buf+2K, phys_data_block+2K, 2K); pgd (src)phys_data_block Size(8K) (dst) virt_buf read phys_data_block phys_buf DPU phys_buf+2K Virt_buf+2K
Virt_buf Virt_data_block Pim kernel(DPU) pgd (src)phys_data_block Size(8K) (dst) virt_buf read
phys_data_block phys_buf Virt_buf+4K phys_bufA Pgd 通過pgd和(virt_buf+4K)查表找到對應的值phys_bufA Virt_buf+4K
Virt_buf Virt_data_block Pim kernel(DPU) pgd (src)phys_data_block Size(8K) (dst) virt_buf read
phys_data_block phys_buf Virt_buf+4K phys_bufA Pgd 通過pgd和(virt_buf+4K)查表找到對應的值phys_bufA Virt_buf+4K phys_bufA
Virt_buf Virt_data_block Pim kernel(DPU) Copy data (到page boundary ) clflush(phys_bufA,
2K); memcpy_v(phys_bufA, phys_data_block+4K, 2K); pgd (src)phys_data_block Size(8K) (dst) virt_buf read phys_data_block phys_buf DPU Virt_buf+4K phys_bufA
Virt_buf Virt_data_block Pim kernel(DPU) Copy data (到page boundary ) clflush(phys_bufA,
2K); memcpy_v(phys_bufA, phys_data_block+4K, 2K); pgd (src)phys_data_block Size(8K) (dst) virt_buf read phys_data_block phys_buf DPU Virt_buf+4K phys_bufA
Virt_buf Virt_data_block Pim kernel(DPU) pgd (src)phys_data_block Size(8K) (dst) virt_buf read
phys_data_block phys_buf Virt_buf+4K phys_bufA Virt_buf+6K phys_bufA+2K Pgd 通過pgd和(virt_buf+6K)查表找到對應的phys_bufA+2K(此處似乎不必要)
Virt_buf Virt_data_block Pim kernel(DPU) Copy data (到page boundary ) clflush(phys_bufA+2K,
2K); memcpy_v(phys_bufA, phys_data_block+6K, 2K); pgd (src)phys_data_block Size(8K) (dst) virt_buf read phys_data_block phys_buf DPU Virt_buf+4K phys_bufA
Virt_buf Virt_data_block Pim kernel(DPU) Copy data (到page boundary ) clflush(phys_bufA+2K,
2K); memcpy_v(phys_bufA, phys_data_block+6K, 2K); pgd (src)phys_data_block Size(8K) (dst) virt_buf read phys_data_block phys_buf DPU Virt_buf+4K phys_bufA