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
機械語の観点から見るCPUの違い
Search
Satoru Takeuchi
PRO
July 15, 2020
Technology
530
0
Share
機械語の観点から見るCPUの違い
以下動画のテキストです。
https://youtu.be/-mlle9FgNyI
Satoru Takeuchi
PRO
July 15, 2020
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
システム強制終了時にファイルシステムの整合性を保つ~ コピーオンライト編 ~
sat
PRO
0
40
システム強制終了時に ファイルシステムの整合性を保つ ~ ジャーナリング編 ~
sat
PRO
1
45
ファイルシステムの整合性を回復するfsck
sat
PRO
1
45
小学校5,6年生向けキャリア教育 大人になるまでの道
sat
PRO
8
3.9k
ファイルシステムの不整合
sat
PRO
2
140
書籍執筆での生成AIの活用
sat
PRO
2
480
ChatGPTに従って体調管理2026
sat
PRO
0
180
eBPF
sat
PRO
1
150
waruiBPF
sat
PRO
0
130
Other Decks in Technology
See All in Technology
ハーネスエンジニアリング入門
knishioka
0
110
Cortex Codeのコスト見積ヒントご紹介
yokatsuki
0
150
AIが盛んな時代に 技術記事を書き始めて起きた私の中での小さな変化
peintangos
0
350
20260428_Product Management Summit_Loglass_JoeHirose
loglassjoe
4
6.9k
Fabric MCPの紹介と使い分け
ryomaru0825
1
120
Agent の「自由」と「安全」〜未来に向けて今できること〜
katayan
0
330
データ定義の混乱と戦う 〜 管理会計と財務会計 〜
wonohe
0
230
FessのAI検索モード:検索システムとLLMへの取り組み
marevol
0
260
多角的な視点から見たAGI
terisuke
0
120
Microsoft 365 / Microsoft 365 Copilot : 自分の状態を確認する「ラベル」について
taichinakamura
0
450
AIと乗り切った1,500ページ超のヘルプサイト基盤刷新とさらにその先の話
mugi_uno
2
300
Agents CLI と Gemini Enterprise Agent Platform で マルチエージェント開発が楽しくなる!
kaz1437
0
240
Featured
See All Featured
Making the Leap to Tech Lead
cromwellryan
135
9.8k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.2k
How STYLIGHT went responsive
nonsquared
100
6.1k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
170
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
430
Exploring anti-patterns in Rails
aemeredith
3
350
ラッコキーワード サービス紹介資料
rakko
1
3.2M
Building Adaptive Systems
keathley
44
3k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
230
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.2k
How to make the Groovebox
asonas
2
2.1k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.8k
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ディストリビューションごとに命令の違いへの対応は様々