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
Satoru Takeuchi
PRO
July 15, 2020
Technology
560
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
機械語の観点から見るCPUの違い
以下動画のテキストです。
https://youtu.be/-mlle9FgNyI
Satoru Takeuchi
PRO
July 15, 2020
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
119-多機能ファイルシステムBtrfs_のコピー.pdf
sat
PRO
1
68
Linuxカーネルの インタフェースは変わりうる?
sat
PRO
1
93
あなたの知らないバージョン命名規則
sat
PRO
3
900
Rook: Intro and Deep Dive with Ceph
sat
PRO
1
64
Machine Check Exception
sat
PRO
2
66
バイナリダンプの模様を読む
sat
PRO
0
89
cpコマンドはディスク上でデータを コピーしないことがある
sat
PRO
3
88
114-ファイルのshallow_copy.pdf
sat
PRO
2
57
113-Btrfsのスナップショット.pdf
sat
PRO
0
40
Other Decks in Technology
See All in Technology
新機種発売前に見直そう!端末移行で再ログインが要るアプリ・要らないアプリは何が違うのか 〜シームレスに再開できる設計と実装〜
zozotech
PRO
0
200
え、こんなに早く改修できるの?──新人エンジニアとスクラムマスターの2人が語る、AI×アジャイル開発の現場
ysasago
1
170
俺の仕事は AIに奪われないし、たぶんその BIも要らない
hikaruri
0
500
白金鉱業Meetup Vol.25 アウトカムが二値のデータに対するCausal Impact
brainpadpr
0
220
生成AIエージェントを用いた、 手動テスト手順書から自動テストへの 変換手法の検討
magicpod
0
160
バイブコーディング時代のWebアプリ開発入門~Cloud Runで学ぶセキュアなビルドとデプロイ
waiwai2111
1
130
Genieを崇めよ
kameitomohiro
0
160
エージェントはローカル、検証はMicroVM — Lambda MicroVMsでつくるServerless CI
fujioka6789
2
130
aws-iot-platform-architecture-use-cases.pdf
ma2shita
0
250
おい、エージェントを使って終わらせろ
nwiizo
1
610
人間はどの意思決定を手放せるのか
kawasima
15
7.2k
OpenTelemetry eBPF Instrumentationの舞台裏 / Behind the Scenes of OpenTelemetry eBPF Instrumentation
ymotongpoo
4
1.3k
Featured
See All Featured
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.8k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
500
Tell your own story through comics
letsgokoyo
1
1.1k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.1k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.3k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.3k
Producing Creativity
orderedlist
PRO
348
41k
[SF Ruby Conf 2025] Rails X
palkan
3
1.4k
Speed Design
sergeychernyshev
33
2.1k
The Curious Case for Waylosing
cassininazir
1
510
Mobile First: as difficult as doing things right
swwweet
225
10k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
360
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ディストリビューションごとに命令の違いへの対応は様々