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
「プログラマーのためのCPU入門」は入り口として丁度よい!
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
forrep
February 28, 2024
Programming
38k
54
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
「プログラマーのためのCPU入門」は入り口として丁度よい!
forrep
February 28, 2024
More Decks by forrep
See All by forrep
サービスに組み込むAIのパターン/アンチパターン
forrep
0
160
Linux && Docker 研修/Linux && Docker training
forrep
28
5.9k
RAGにベクトルDBは必要ない!DBも不要で運用めちゃ楽な RAG Chatbot を作った話
forrep
38
18k
Google Analytics でサイト速度を計測する / Measure site speed with Google Analytics
forrep
2
460
最近コードレビューで指摘したこと
forrep
4
650
DevTools でパフォーマンスチューニング入門 / Introduction to Performance Tuning with DevTools
forrep
2
560
技術的負債に対する視力を得る / How to View Technical Debt
forrep
0
980
しくじり先生 - NFS+sqliteで苦労した話から学ぶ、問題解決の考え方 / problem-solving approach
forrep
1
1.4k
理屈で考える、データベースのチューニング / Database tuning How-To
forrep
28
9.9k
Other Decks in Programming
See All in Programming
ハーネス設計入門 〜 基礎知識の整理から実務へのステップアップ 〜
kinopeee
19
20k
選挙速報を多くのユーザーへ 届ける Live Activities 設計
hamayokokuririn
0
190
Findy - エンジニア向け会社紹介/Findy Company Deck
findyinc
6
400k
Starting & Sustaining Code-Based E2E Testing for Non-Coding QA Teams( #jasstniigata )
teyamagu
PRO
1
800
市販E-Readerを乗っ取れ 〜Embedded Swiftで電子ペーパーガジェットを制御する〜
trickart
0
220
フロントエンドUIフレームワークのこれまでとこれから
ssssota
5
3.1k
大喜利で理解するLLM as a Judge / Understanding LLM-as-a-Judge through Ogiri
rockname
0
180
Androidだけじゃない、DroidKaigiで広がった私の技術スタック
akkeylab
0
110
ゲームコントローラやキーボードのファームウェアをSwiftで書く
kishikawakatsumi
1
270
AWSに止められる覚悟してますか?
morizo_1984
2
490
GitHubハンズオン講座 — 実務レベルのチーム開発のフローを身につけよう
junhat6
0
110
スマートフォンでモールス信号を送受信する 〜スマートフォンのLEDとカメラで作る光通信の設計と実装〜
atsuki_seo
0
210
Featured
See All Featured
Mind Mapping
helmedeiros
1
390
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.6k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
3
3.8k
Navigating Team Friction
lara
192
16k
A Modern Web Designer's Workflow
chriscoyier
699
190k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
330
Typedesign – Prime Four
hannesfritz
42
3.2k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
290
Darren the Foodie - Storyboard
khoart
PRO
4
4k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Producing Creativity
orderedlist
PRO
348
41k
Transcript
「プログラマーのためのCPU入門」 は入り口として丁度よい! ~ Webエンジニア目線 ~ 1 株式会社ラクーンホールディングス 技術戦略部 羽山純
自己紹介 • 名前 ◦ 羽山 純(Jun Hayama) • 所属 ◦
株式会社ラクーンホールディングス 技術戦略部 • 技術領域 ◦ バックエンド・インフラ ◦ パフォーマンス改善 ▪ MySQLでプライマリキーをUUIDにする前に知っておいて欲しいこと ◦ AI(企業審査AI) • 個人活動 ◦ アプリ開発 2
紹介する書籍 プログラマーのためのCPU入門 - CPUは如何にしてソフトウェアを 高速に実行するか いわゆる「低レイヤ」の書籍です 3 Takenobu Tani.(2023-1-25).“プログラマーのためのCPU入門 -
CPUは如何にしてソフトウェアを高速に実行するか”.ラムダ ノート.https://www.lambdanote.com/products/cpu
「低レイヤ」について、こう思っていませんか? • WebエンジニアにはCPUほどの低レイヤは必要ない • クラウド環境だから細かいことを考えなくてもよい • 現代のCPUは十分に速いから気にしなくてもよい → そんなことはありません 4
本書で得られるメリット(1) 本書で得られるメリット(1) カーネルの理解を深められる 5
カーネルの知識を深められる 上位レイヤは下位レイヤに依存し、 各レイヤの習得には1~2レイヤ下までの知識が必要です 本書はCPUへの理解を通して カーネルの理解を深めてくれます 6 アプリケーション ライブラリ・FW ランタイム・VM コンパイラ
ユーザー空間 カーネル ハードウェア OS CPU 他 言語 依存 依存 依存 依存 依存
本書で得られるメリット(2) 本書で得られるメリット(2) 長く生きる汎用的な知識と問題解決力 7
山で遭難したら登れ 「山で遭難したら登れ」と言われます 逆すり鉢の形状で山頂に近づくほど狭くなるため 登ると正規ルートに復帰できる可能性が 高くなります この形は先ほどの「低レイヤ」の図 と似てませんか? 8
低レイヤほどバリエーションが減少 アプリケーションは要件やサービスだけ星の数ほど ライブラリ・FW は Django, Flask, SpringBoot, Rails, , ,
その下層は Python, Java, Ruby, , , OS は Linux がデファクト 低レイヤほどバリエーションが少なく 長く使える汎用的な知識となります 9 アプリケーション ライブラリ・FW ランタイム・VM コンパイラ ユーザー空間 カーネル ハードウェア OS CPU 他 言語
問題解決力 問題解決では、順に低レイヤに降りると解決しやすいです いずこかで発生した問題に対し、 降りられる限界のレイヤが そのエンジニアの力量です 本書でCPUの知識を通して カーネルへの理解を深めると 問題解決力が上昇します 10 アプリケーション
ライブラリ・FW ランタイム・VM コンパイラ ユーザー空間 カーネル ハードウェア OS CPU 他 言語
本書で得られるメリット(3) 本書で得られるメリット(3) パフォーマンスはやっぱり大切 11
アプリ・インフラの高速化のヒントがたくさん • システムコールが遅い理由を仕組みから理解できた • メモリは仮想記憶のため1度の取得に2回のアクセスが必要 ◦ 仮想アドレスと物理アドレスをページテーブルで変換 ◦ ページテーブルのキャッシュ(TLB)をミスするととても遅い ◦
巨大なメモリ空間を利用するとページテーブルが肥大化する • メモリはCPUより4倍ほど遅いが、L1キャッシュミスすると 100倍ほどまで遅くなる、メインメモリはとても遅い ◦ 小さいメモリ空間の利用は速いが、巨大なメモリ空間をランダ ムで使うと、キャッシュミスして100~1000倍は遅い • 複数コア・マルチスレッドで同一アドレスへの書き込みを行 うと「コヒーレンスミス」が発生して非常に遅い ◦ マルチプロセスモデルの方が優れているシーンもある 12
まとめと余談 Webエンジニア目線で本書は CPUを通してカーネルの知識を深めるために有用です そして、効率的なアルゴリズムを組むのに最適な知識が たくさん詰まっています パズルの最適解を探すアプリを開発していた時代に 出会っていたら、あと2割は演算を速くできたと思います 13