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
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
見栄えと使いやすさの先にある 特別感 をデザインする / Designing a Sense of Specialness Beyond Aesthetics and Usability
bitkey
PRO
0
250
デザイナーが主導権を握る、AI協業の本音と実践
satosio
7
2.7k
hicard_credential_202601
hicard
0
150
DMMデザイナーの “AI活用の現在と未来”
takumasaito
1
440
Drawing for Animation
lynteo
2
180
AI業務アプリケーションの体験デザイン
kazuhirokimura
0
250
root COMPANY DECK / We are hiring!
root_recruit
2
26k
デザインを信じていますか
sekiguchiy
1
940
これからの「Webデザイン」の話をしよう~デザイナーの私が考えるブロックテーマへの対応で変わりゆくデザインの価値~
ds35mm
0
540
アンエシカルデザインの枠組みの提案 -HCD-Netダークパターン研究会活動報告-
securecat
0
200
DESIGNEAST 2025 A-3
_kotobuki_
0
130
図じゃなく言語で描く - Common Ground for Design AI Operations.
kazukiikeda
1
660
Featured
See All Featured
Leading Effective Engineering Teams in the AI Era
addyosmani
9
1.6k
Automating Front-end Workflow
addyosmani
1371
200k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
How to build a perfect <img>
jonoalderson
1
4.9k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
160
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
110
Bash Introduction
62gerente
615
210k
Google's AI Overviews - The New Search
badams
0
900
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
580
The browser strikes back
jonoalderson
0
360
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.2k
How to Think Like a Performance Engineer
csswizardry
28
2.4k
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