$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
機械語の観点から見るCPUの違い
Search
Satoru Takeuchi
PRO
July 15, 2020
Technology
0
510
機械語の観点から見るCPUの違い
以下動画のテキストです。
https://youtu.be/-mlle9FgNyI
Satoru Takeuchi
PRO
July 15, 2020
Tweet
Share
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
eBPF
sat
PRO
1
97
waruiBPF
sat
PRO
0
94
eBPFとwaruiBPF
sat
PRO
4
2.9k
Pythonのコードの気になる行でスタックトレースを出す
sat
PRO
0
89
ソースコードを読むときの思考プロセスの例 ~markdownのレンダリング方法を知りたかった2 markdownパッケージ~
sat
PRO
0
180
様々なファイルシステム
sat
PRO
0
330
ソースを読む時の思考プロセスの例-MkDocs
sat
PRO
1
410
ソースを読むプロセスの例
sat
PRO
22
17k
メモリマップトファイル
sat
PRO
1
170
Other Decks in Technology
See All in Technology
テストセンター受験、オンライン受験、どっちなんだい?
yama3133
0
170
[Data & AI Summit '25 Fall] AIでデータ活用を進化させる!Google Cloudで作るデータ活用の未来
kirimaru
0
3.9k
『君の名は』と聞く君の名は。 / Your name, you who asks for mine.
nttcom
1
120
普段使ってるClaude Skillsの紹介(by Notebooklm)
zerebom
8
2.2k
SREが取り組むデプロイ高速化 ─ Docker Buildを最適化した話
capytan
0
150
なぜ あなたはそんなに re:Invent に行くのか?
miu_crescent
PRO
0
210
AWS運用を効率化する!AWS Organizationsを軸にした一元管理の実践/nikkei-tech-talk-202512
nikkei_engineer_recruiting
0
170
日本Rubyの会: これまでとこれから
snoozer05
PRO
6
240
アプリにAIを正しく組み込むための アーキテクチャ── 国産LLMの現実と実践
kohju
0
230
ソフトウェアエンジニアとAIエンジニアの役割分担についてのある事例
kworkdev
PRO
0
260
ハッカソンから社内プロダクトへ AIエージェント「ko☆shi」開発で学んだ4つの重要要素
sonoda_mj
6
1.7k
100以上の新規コネクタ提供を可能にしたアーキテクチャ
ooyukioo
0
260
Featured
See All Featured
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
45
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
BBQ
matthewcrist
89
9.9k
The Language of Interfaces
destraynor
162
25k
Ruling the World: When Life Gets Gamed
codingconduct
0
100
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Building Flexible Design Systems
yeseniaperezcruz
330
39k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
340
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
28
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Accessibility Awareness
sabderemane
0
24
Transcript
機械語の観点から見る CPUの違い Jul 15th, 2020 Satoru Takeuchi Twitter: satoru_takeuchi
もくじ • いろいろな「CPUの違い」 • アーキテクチャによる違い • メーカーによる違い • モデルによる違い •
まとめ
もくじ • いろいろな「CPUの違い」 • アーキテクチャによる違い • メーカーによる違い • モデルによる違い •
まとめ
CPUの違い • CPUはものによって様々な違いがある • 機械語という観点に絞って違いを説明 ◦ 機械語: CPUが命令として解釈できるバイナリ • 大きく分けて、次の点によって機械語レベルの違いが出る
◦ アーキテクチャ: x86_64, ARM… ◦ メーカー: x86アーキテクチャにおける IntelとAMDなど ◦ モデル: 「第<n>世代Coreアーキテクチャ」の<n>による違いなど
もくじ • いろいろな「CPUの違い」 • アーキテクチャによる違い • メーカーによる違い • モデルによる違い •
まとめ
アーキテクチャの違い • 演習 ◦ X86_64 CPUとARM CPUで機械語レベルの違いを見る • 必要なパッケージ(Ubuntu 18.04)
◦ golang ◦ Binutils ◦ Binutils-arm-linux-gnueabi • やること ◦ Goでx86_64とarmの実行ファイルを作る ▪ X86_64: go build -o test-x86_64 test.go ▪ Arm: GOARCH=arm go build -o test-arm test.go ◦ それぞれのアセンブリ言語と機械語を出力して違いを見る • 互換性があるアーキテクチャもある: x86_64はx86の命令もサポート
もくじ • いろいろな「CPUの違い」 • アーキテクチャによる違い • メーカーによる違い • モデルによる違い •
まとめ
メーカーによる違い • CPUのメーカーによってサポートする命令セットは異なりうる • 例) 仮想化機能 ◦ IntelはVT-x、AMDはSVM ◦ /proc/cpuinfoのflagsフィールドを見ればわかる
◦ 互換性は無い • 仮想マシンを起動する命令 ◦ Intel VT-x: vmlaunch: バイナリ列は”0F 01 C2” ◦ AMD SVM: vmrun: バイナリ列は”0f 01 d8” • カーネル内でも使い分けている ◦ コード: arch/x86/kvm/{vmx,svm} ◦ モジュール: /lib/modules/<カーネルバージョン>/kernel/arch/x86/kvm/kvm-{amd,intel}.ko
もくじ • いろいろな「CPUの違い」 • アーキテクチャによる違い • メーカーによる違い • モデルによる違い •
まとめ
モデルによる違い • 同じメーカーでもモデルによってサポートする命令セットは異なる • 例) AVX2: 一度に複数の浮動小数点演算をする命令セットの一つ ◦ いわゆるSIMD ◦
第三世代Coreプロセッサ(ivybridge): サポートしない ◦ 第四世代Coreプロセッサ(haswell): サポートする • Gccではオプションによって命令セットを使うかどうかを分けられる ◦ -mavx2: AVX2命令セットを使う ◦ -march=haswell: haswellでサポートされている命令セット (AVX2を含む)を使う • Linuxディストリビューションによって対応方法は様々 ◦ なるべく多くの環境で動くバイナリを標準パッケージとする ◦ ユーザがCPUモデルを選択してビルドできるようにする
もくじ • いろいろな「CPUの違い」 • アーキテクチャによる違い • メーカーによる違い • モデルによる違い •
まとめ
まとめ • 様々な理由によってCPUの機械語レベルでの違いが出る ◦ アーキテクチャ ◦ メーカー ◦ モデル •
Linuxディストリビューションごとに命令の違いへの対応は様々