Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
test
Search
a1933b51019
February 14, 2024
Design
120
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
test
for test
a1933b51019
February 14, 2024
More Decks by a1933b51019
See All by a1933b51019
myread
chungvlong
0
41
Other Decks in Design
See All in Design
分散するデザイン組織をつなぐ デザインミートアップの取り組み/nikkei-tech-talk49
nikkei_engineer_recruiting
1
360
Webデザイナー中田美穂_ポートフォリオ
omy
0
190
Rondo 1 Minute Short Storyboard
rezaline
0
120
デザイン組織の"次の"強みづくり
isaikaori
2
320
コールセンターのオペレーターに6時間だけなってみた
h0sa
0
180
富山デザイン勉強会_生成AIを使ったデザイン制作2026最新版.pdf
keita_yoshikawa
0
160
The ISO 25964 standard on Information and documentation — Thesauri and interoperability with other vocabularies
accessinnovations
0
270
decksh object reference
ajstarks
2
1.8k
インターンから2年新卒フロントエンドエンジニアから見たサイボウズのアクセシビリティ
taku10101
0
180
【CEDEC2026】派手さと見やすさは両立できる!『Shadowverse: Worlds Beyond』エフェクト・3D背景の超進化したビジュアル設計
cygames
PRO
2
2.2k
Findy - デザインチーム紹介 / Findy Design Team Culture Deck
findyinc
14
150k
Look Dev Meetup #50
baku89
1
520
Featured
See All Featured
Exploring anti-patterns in Rails
aemeredith
4
540
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
A better future with KSS
kneath
240
18k
Building Better People: How to give real-time feedback that sticks.
wjessup
371
20k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
890
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.4k
Documentation Writing (for coders)
carmenintech
77
5.6k
The Curse of the Amulet
leimatthew05
3
16k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
50
10k
Six Lessons from altMBA
skipperchong
29
4.5k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.9k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
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