SlideShare una empresa de Scribd logo
1 de 56
Descargar para leer sin conexión
バイナリより低レイヤな話
@hktechno
@hktechno
川田 裕貴 (かわたひろたか)
● 筑波大学に4月から入院中 (元coins09-AC)
○ システム情報工学研究科
コンピュータサイエンス専攻
○ 実時間組み込みアーキテクチャ研究室
● Open Design Computer Project
○ IPA 未踏 2011 スーパーなんとか
● トプスなんとかっていう会社でバイト中
○ LLVM-IR と最近戯れている
● PyCon JP 2014 プログラムチーム
Open Design Computer Project
http://open-arch.org/
● mist32 という自作CPUを作っている
○ 32bit Out of Order RISC コア
○ In-order 版もあるよ
○ FPGA (DE2-115, DE3) 上で動く
● CPU マニアと一緒にやっている
○ @cpu_labs
● 自分はソフトウェアを作っている
○ gcc, binutils, newlib...
○ 最近 xv6 OS が動いた (実機は微妙)
今日の忘れ物
低レイヤ
低レイヤ感の違い
● hktechno: 低レイヤ好きな人いなくて
● ???: 低レイヤ?うちにもいるよ?
● hktechno: どんなことやってるんですか?
● ???: ほら、C++ とか
低レイヤ 検索
低レイヤ 検索
低レイヤー入門
● http://www.slideshare.net/demuyan/ss-
19333584
疑問
● C が使えたら低レイヤなのか
● バイナリが喋れたら低レイヤなのか
● 低レイヤとはなにか
低レイヤとは
システムソフトウェア
VM
OS kernel
アセンブラ
バイナリ
カーネル/VM 的
低レイヤ
Eject
アプリケーション
最低レイヤはなにか
バイナリは、最低レイヤでしょうか?
バイナリが喋れればかっこいいか?
バイナリが喋れるだけで、満足していませんか
相手の心もわかっていないのに
低レイヤ
自作コンピューター感の違い
● hktechno: コンピューターを自作してます
● ???: 最近自作しなくなったなー
● hktechno: えっ
● ???: えっ
低レイヤとは システムソフトウェア
VM
OS kernel
アセンブラ
バイナリ
プロセッサ
本来の低レイヤ
低レイヤとは システムソフトウェア
VM
OS kernel
アセンブラ
バイナリ
プロセッサ
低レイヤ
低レイヤとは システムソフトウェア
VM
OS kernel
アセンブラ
バイナリ
プロセッサ
CPUマニアが考
える低レイヤ
低レイヤを知るなら...
バイナリだけ出来てもプロセッサは口説けない
そうだ、低レイヤを極めよう
プロセッサの心を読み解く
# 前振りが長かった
プロセッサの違い
● Intel 第4世代 Core アーキテクチャ
○ Haswell (tock), Broadwell (tick)
● Intel 第3世代 Core アーキテクチャ
○ Sandy Bridge (tock), Ivy Bridge (tick)
違いは何ですか?
● AVX2
● TSX (HTM)
● ???
SandyBridge -> Haswell
誰も気にしてくれない進化
● 演算ポートが2つ追加
○ Integer ALU + Branch
○ AGU for stores
● Branch prediction unit の改良
● Reservation station の拡張
● Re-order buffer の拡張
● Physical register file の拡張
そもそもなんだかわからない
プロセッサのブロック図を眺めてみる
わかってそうで、わかってない内部構造
● Execution Ports
● Out of Order Execution
● Branch prediction
● x86 を中心に色々眺めてみる
明日から使えるムダ知識
基本的なパイプライン
● Instruction Fetch
● Instruction Decode
● Execution
○ Memory Access
● Write Back
● Instruction Fetch
● Instruction Buffer
● Instruction Decode
● Dispatch
● Execution
MIST32 (In-order: MIST1032ISA)
IB
ここまでが、インオーダーの話
ここから、アウトオブオーダーの話
実行ポート
4個 OoOな領域
2命令同時
Fetch
Decode
…
(Super-
Scalar)
Out of Order Execution
mov eax, [eax]
xor ebx, ebx
add ebx, eax
inc ecx
add eax, ecx
Load (遅い)
↑の命令とは依存がない
↑の命令とは依存がない
Out of Order Execution
mov eax, [eax]
xor ebx, ebx
add ebx, eax
inc ecx
add eax, ecx
Load (遅い)
↑の命令とは依存がない
↑の命令とは依存がない
1
2
3
2
3
命令の順番を入れ替えても構わない
しかも、開いてるポートに並列に実行できる
Out of Order Execution
非順序実行
● 実行できる命令から実行する
プロセッサがやらなければならないこと
1. 命令の依存関係を知る
2. 命令をバッファする
3. 実行できる命令から実行する
4. どの命令が終わったかを知る
5. 本来の順序でレジスタへコミットする
Out of Order Execution
● Out of Order
○ Intel P6 から実装 (Pentium Pro)
○ Intel Atom (Silvermont から実装)
○ ARM Cortex-A9 から実装
○ mist32
■ ただし Load/Store OoO は未実装
● In Order
○ Intel Atom (初代 Bonnell)
○ ARM Cortex-A7 以前
速くはなるが
回路規模は大きくなる
更に深く進んでみる
Out of Order Execution
● Register Renaming
○ 物理レジスタを仮想レジスタにリネームする
○ 命令の依存をより少なくできる
○ (アウトオブオーダー実行に必須ではないが...)
mov eax, [eax]
inc eax
mov [eax], eax
mov eax, ebx
mov eax, [eax]
同じ eax レジスタ
だが、依存はない
← 先に実行可能
Out of Order Execution
代表的な OoO の実装
● Reorder Buffer
○ 命令のコミットを制御するバッファ
○ 演算の結果は一度ここへ書かれる
● Reservation Station
○ 命令の依存関係を待つところ
○ ソースレジスタが利用可能かを監視して、
実行可能であれば実行を開始する
○ Unified な方式、実行ポートごとに持たせる方式
Reorder Buffer (の一例)
Reorder Buffer Stage
1. 割り当て
Writeback Stage
2. 結果の書き込み
Retire / Commit
Reorder Buffer
Register File
3. コミット
Reservation Station (の一例)
Reservation Station
命令1 SRC1
NG
SRC2
OK
命令2 NG NG
命令3 OK NG
命令4 OK OK
Reorder Buffer,
Register File
Execution ステージへ
息抜きに、x86 のブロック図を眺めてみよう
http://www.tomshardware.com/reviews/athlon-processor,121-2.html
http://www.tomshardware.com/reviews/athlon-processor,121-2.html
http://www.thg.ru/cpu/20001120/print.html
uOPs (micro-OPs)
みんな知ってる?
カーネル/VM では説明不要
最近? の uOPs
● Micro-OPs Fusion
○ Fused Micro-OP
○ 一部 uOP をまとめてパイプラインに流す
■ uOP 帯域の削減
● Macro-OPs Fusion
○ 複数の x86 命令をまとめる
○ 例えば CMP + Jxx
○ Macro-OP レベルの並列性を向上
■ 少ないデコーダで実現
Branch prediction
分岐予測
● ブランチは厄介
○ taken / not taken は直前になるまでわからない
○ ミスするとパイプラインをフラッシュしてやり直し
■ すごい大きなペナルティになる
○ ブランチするかしないか、予測する必要がある
分岐予測以外のアイデア
● Condition-Code (ARM)
○ AArch64 では消え去りました
Branch prediction
mov eax, [eax]
cmp eax, 0
je is_zero
...
...
is_zero:
...
実行完了するまで
分岐するかわからない
Branch prediction
● 分岐予測がアツイ (らしい)
○ 電力があまり食わない上に性能向上に直結する
○ Intel の 3% ルール
○ 最近もいろいろな変更がある (ただし企業秘密?)
● 基本的な分岐予測
○ 分岐しない (or する) 方向で常に予測しておく
■ 486
○ 前回分岐した結果を保存しておく
○ ループを検出する
○ ...
Branch prediction
● Bi-modal counter
○ よく branch するループは strongly taken に
○ ほとんど branch しない場合は stolongly not taken
○ 一度だけならいつもと違う動作をしても予測できる
Branch prediction
● Loop detector
○ n 回目で必ず分岐するなら、n を記憶しておく
○ 過去 n 回の分岐パターンを記憶する
● Global branch predictor
○ ある特定の分岐をそれぞれ記憶するのではなく、
すべての分岐のパターンを記憶しておく
○ 周りの分岐命令との相関関係
最近のプロセッサは、ハイブリッド分岐予測器
● Bimodal + Loop detector + Global
● どれか有効なものを使用する
最近の x86 のブロック図を眺めてみよう
ブロック図を読み解く
http://arstechnica.com/business/2010/09/intels-next-must-have-upgrade-a-look-at-sandy-bridge/
http://www.hardwaresecrets.com/printpage/Inside-the-Intel-Haswell-Microarchitecture/1777
最近の Intel のプロセッサ
● Zeroing Idioms
○ xor eax, eax のような命令をゼロレジスタに、
リネームする
● uOP Cache
○ uOp の変換をキャッシュする
○ フロントエンドが眠ることができる
○ Intel のデコーダはでかい
■ でかいデコーダを眠らせると電力効率アップ
● 実行ポートの増加
○ ブランチユニット、AGU が増えた
最近の Intel プロセッサ
他にも...
● Physical Register File
○ 物理レジスタファイルへ直接書き込む
○ 待ち受け命令への ROB からのコピーを削減
● 分岐予測機のさらなる改良
○ 詳細不明、エントリが増えてるなど
● ROB, RS のエントリの追加
● Macro-Fusion の命令の追加
最近の Intel のプロセッサ
● デコードの隠蔽に力を入れているっぽい
○ x86 のクソ命令セットが重い
○ デコーダに負担がかかる
■ デコーダ回路もでかい + 電力食い
○ いかにデコーダを回さないか
■ uOP Cache
■ uOP レベルでの分岐予測
● なぜ、あんなに性能が出るのか
○ 命令セットはクズなのに
○ Intel すごすぎ
ただし、Intel に x86 以外を作らせると...
http://pc.watch.impress.co.jp/docs/column/kaigai/20130912_615261.html
http://pc.watch.impress.co.jp/docs/column/kaigai/20120214_511793.html
まとめ
● マイクロアーキテクチャの進化
○ まだまだ続きそう
○ だけど Intel の独壇場的な感じもする
● 世代・メーカーで結構違う
○ Intel と AMD のポートのもたせ方の違いとか

Más contenido relacionado

La actualidad más candente

ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門Fixstars Corporation
 
ARM Trusted FirmwareのBL31を単体で使う!
ARM Trusted FirmwareのBL31を単体で使う!ARM Trusted FirmwareのBL31を単体で使う!
ARM Trusted FirmwareのBL31を単体で使う!Mr. Vengineer
 
4章 Linuxカーネル - 割り込み・例外 3
4章 Linuxカーネル - 割り込み・例外 34章 Linuxカーネル - 割り込み・例外 3
4章 Linuxカーネル - 割り込み・例外 3mao999
 
20111015 勉強会 (PCIe / SR-IOV)
20111015 勉強会 (PCIe / SR-IOV)20111015 勉強会 (PCIe / SR-IOV)
20111015 勉強会 (PCIe / SR-IOV)Kentaro Ebisawa
 
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)Kuniyasu Suzaki
 
Interrupt Affinityについて
Interrupt AffinityについてInterrupt Affinityについて
Interrupt AffinityについてTakuya ASADA
 
プログラムを高速化する話Ⅱ 〜GPGPU編〜
プログラムを高速化する話Ⅱ 〜GPGPU編〜プログラムを高速化する話Ⅱ 〜GPGPU編〜
プログラムを高速化する話Ⅱ 〜GPGPU編〜京大 マイコンクラブ
 
ISSCC 2018: "Zeppelin": an SoC for Multi-chip Architectures
ISSCC 2018: "Zeppelin": an SoC for Multi-chip ArchitecturesISSCC 2018: "Zeppelin": an SoC for Multi-chip Architectures
ISSCC 2018: "Zeppelin": an SoC for Multi-chip ArchitecturesAMD
 
FPGAのトレンドをまとめてみた
FPGAのトレンドをまとめてみたFPGAのトレンドをまとめてみた
FPGAのトレンドをまとめてみたTakefumi MIYOSHI
 
ELFの動的リンク
ELFの動的リンクELFの動的リンク
ELFの動的リンク7shi
 
FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料一路 川染
 
Microsemi FPGAで RISC-V を動かしてみた話 (Lチカ)
Microsemi FPGAで RISC-V を動かしてみた話 (Lチカ)Microsemi FPGAで RISC-V を動かしてみた話 (Lチカ)
Microsemi FPGAで RISC-V を動かしてみた話 (Lチカ)Takayasu Shibata
 
ARM LinuxのMMUはわかりにくい
ARM LinuxのMMUはわかりにくいARM LinuxのMMUはわかりにくい
ARM LinuxのMMUはわかりにくいwata2ki
 
2値化CNN on FPGAでGPUとガチンコバトル(公開版)
2値化CNN on FPGAでGPUとガチンコバトル(公開版)2値化CNN on FPGAでGPUとガチンコバトル(公開版)
2値化CNN on FPGAでGPUとガチンコバトル(公開版)Hiroki Nakahara
 
不揮発メモリ(NVDIMM)とLinuxの対応動向について
不揮発メモリ(NVDIMM)とLinuxの対応動向について不揮発メモリ(NVDIMM)とLinuxの対応動向について
不揮発メモリ(NVDIMM)とLinuxの対応動向についてYasunori Goto
 
Debian Linux on Zynq (Xilinx ARM-SoC FPGA) Setup Flow (Vivado 2015.4)
Debian Linux on Zynq (Xilinx ARM-SoC FPGA) Setup Flow (Vivado 2015.4)Debian Linux on Zynq (Xilinx ARM-SoC FPGA) Setup Flow (Vivado 2015.4)
Debian Linux on Zynq (Xilinx ARM-SoC FPGA) Setup Flow (Vivado 2015.4)Shinya Takamaeda-Y
 
TensorFlow Lite Delegateとは?
TensorFlow Lite Delegateとは?TensorFlow Lite Delegateとは?
TensorFlow Lite Delegateとは?Mr. Vengineer
 
LAS16-403: GDB Linux Kernel Awareness
LAS16-403: GDB Linux Kernel AwarenessLAS16-403: GDB Linux Kernel Awareness
LAS16-403: GDB Linux Kernel AwarenessLinaro
 
FPGA, AI, エッジコンピューティング
FPGA, AI, エッジコンピューティングFPGA, AI, エッジコンピューティング
FPGA, AI, エッジコンピューティングHideo Terada
 

La actualidad más candente (20)

学ロボの制御
学ロボの制御学ロボの制御
学ロボの制御
 
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門
 
ARM Trusted FirmwareのBL31を単体で使う!
ARM Trusted FirmwareのBL31を単体で使う!ARM Trusted FirmwareのBL31を単体で使う!
ARM Trusted FirmwareのBL31を単体で使う!
 
4章 Linuxカーネル - 割り込み・例外 3
4章 Linuxカーネル - 割り込み・例外 34章 Linuxカーネル - 割り込み・例外 3
4章 Linuxカーネル - 割り込み・例外 3
 
20111015 勉強会 (PCIe / SR-IOV)
20111015 勉強会 (PCIe / SR-IOV)20111015 勉強会 (PCIe / SR-IOV)
20111015 勉強会 (PCIe / SR-IOV)
 
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
 
Interrupt Affinityについて
Interrupt AffinityについてInterrupt Affinityについて
Interrupt Affinityについて
 
プログラムを高速化する話Ⅱ 〜GPGPU編〜
プログラムを高速化する話Ⅱ 〜GPGPU編〜プログラムを高速化する話Ⅱ 〜GPGPU編〜
プログラムを高速化する話Ⅱ 〜GPGPU編〜
 
ISSCC 2018: "Zeppelin": an SoC for Multi-chip Architectures
ISSCC 2018: "Zeppelin": an SoC for Multi-chip ArchitecturesISSCC 2018: "Zeppelin": an SoC for Multi-chip Architectures
ISSCC 2018: "Zeppelin": an SoC for Multi-chip Architectures
 
FPGAのトレンドをまとめてみた
FPGAのトレンドをまとめてみたFPGAのトレンドをまとめてみた
FPGAのトレンドをまとめてみた
 
ELFの動的リンク
ELFの動的リンクELFの動的リンク
ELFの動的リンク
 
FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料
 
Microsemi FPGAで RISC-V を動かしてみた話 (Lチカ)
Microsemi FPGAで RISC-V を動かしてみた話 (Lチカ)Microsemi FPGAで RISC-V を動かしてみた話 (Lチカ)
Microsemi FPGAで RISC-V を動かしてみた話 (Lチカ)
 
ARM LinuxのMMUはわかりにくい
ARM LinuxのMMUはわかりにくいARM LinuxのMMUはわかりにくい
ARM LinuxのMMUはわかりにくい
 
2値化CNN on FPGAでGPUとガチンコバトル(公開版)
2値化CNN on FPGAでGPUとガチンコバトル(公開版)2値化CNN on FPGAでGPUとガチンコバトル(公開版)
2値化CNN on FPGAでGPUとガチンコバトル(公開版)
 
不揮発メモリ(NVDIMM)とLinuxの対応動向について
不揮発メモリ(NVDIMM)とLinuxの対応動向について不揮発メモリ(NVDIMM)とLinuxの対応動向について
不揮発メモリ(NVDIMM)とLinuxの対応動向について
 
Debian Linux on Zynq (Xilinx ARM-SoC FPGA) Setup Flow (Vivado 2015.4)
Debian Linux on Zynq (Xilinx ARM-SoC FPGA) Setup Flow (Vivado 2015.4)Debian Linux on Zynq (Xilinx ARM-SoC FPGA) Setup Flow (Vivado 2015.4)
Debian Linux on Zynq (Xilinx ARM-SoC FPGA) Setup Flow (Vivado 2015.4)
 
TensorFlow Lite Delegateとは?
TensorFlow Lite Delegateとは?TensorFlow Lite Delegateとは?
TensorFlow Lite Delegateとは?
 
LAS16-403: GDB Linux Kernel Awareness
LAS16-403: GDB Linux Kernel AwarenessLAS16-403: GDB Linux Kernel Awareness
LAS16-403: GDB Linux Kernel Awareness
 
FPGA, AI, エッジコンピューティング
FPGA, AI, エッジコンピューティングFPGA, AI, エッジコンピューティング
FPGA, AI, エッジコンピューティング
 

Destacado

C++でできる!OS自作入門
C++でできる!OS自作入門C++でできる!OS自作入門
C++でできる!OS自作入門uchan_nos
 
やってよかったOS作り
やってよかったOS作りやってよかったOS作り
やってよかったOS作りHidemi Kawai
 
低レイヤー入門
低レイヤー入門低レイヤー入門
低レイヤー入門demuyan
 
ハッキング実演
ハッキング実演ハッキング実演
ハッキング実演Ken Ogura
 
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくばHirotaka Kawata
 
【2000行弱!】x86用自作カーネルの紹介
【2000行弱!】x86用自作カーネルの紹介【2000行弱!】x86用自作カーネルの紹介
【2000行弱!】x86用自作カーネルの紹介Yuma Ohgami
 
CTF超入門 (for 第12回セキュリティさくら)
CTF超入門 (for 第12回セキュリティさくら)CTF超入門 (for 第12回セキュリティさくら)
CTF超入門 (for 第12回セキュリティさくら)kikuchan98
 
はじめてのAndroid開発
はじめてのAndroid開発はじめてのAndroid開発
はじめてのAndroid開発Katsumi Honda
 
IPA未踏成果報告会
IPA未踏成果報告会IPA未踏成果報告会
IPA未踏成果報告会Ito Takahiro
 
Web MIDI meets DIY #0
Web MIDI meets DIY #0Web MIDI meets DIY #0
Web MIDI meets DIY #0Ryoya Kawai
 
Midi with android
Midi with androidMidi with android
Midi with androidkshoji
 
Processing資料(6) 様々な図形
Processing資料(6) 様々な図形Processing資料(6) 様々な図形
Processing資料(6) 様々な図形reona396
 
Processing資料(5) 正弦波と極座標
Processing資料(5) 正弦波と極座標Processing資料(5) 正弦波と極座標
Processing資料(5) 正弦波と極座標reona396
 
自作x86エミュレータの終焉
自作x86エミュレータの終焉自作x86エミュレータの終焉
自作x86エミュレータの終焉Daisuke Kamikawa
 
Javaで作る超簡易x86エミュレータ
Javaで作る超簡易x86エミュレータJavaで作る超簡易x86エミュレータ
Javaで作る超簡易x86エミュレータDaisuke Kamikawa
 
バイナリで遊ぼう(オープンソースカンファレンス2014 Tokyo/Fall ライトニングトーク)
バイナリで遊ぼう(オープンソースカンファレンス2014 Tokyo/Fall ライトニングトーク)バイナリで遊ぼう(オープンソースカンファレンス2014 Tokyo/Fall ライトニングトーク)
バイナリで遊ぼう(オープンソースカンファレンス2014 Tokyo/Fall ライトニングトーク)kozossakai
 
Processing資料(1) Processingの基本
Processing資料(1) Processingの基本Processing資料(1) Processingの基本
Processing資料(1) Processingの基本reona396
 
Processing資料(2) 再帰
Processing資料(2) 再帰Processing資料(2) 再帰
Processing資料(2) 再帰reona396
 

Destacado (20)

C++でできる!OS自作入門
C++でできる!OS自作入門C++でできる!OS自作入門
C++でできる!OS自作入門
 
やってよかったOS作り
やってよかったOS作りやってよかったOS作り
やってよかったOS作り
 
低レイヤー入門
低レイヤー入門低レイヤー入門
低レイヤー入門
 
ハッキング実演
ハッキング実演ハッキング実演
ハッキング実演
 
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
 
【2000行弱!】x86用自作カーネルの紹介
【2000行弱!】x86用自作カーネルの紹介【2000行弱!】x86用自作カーネルの紹介
【2000行弱!】x86用自作カーネルの紹介
 
CTF超入門 (for 第12回セキュリティさくら)
CTF超入門 (for 第12回セキュリティさくら)CTF超入門 (for 第12回セキュリティさくら)
CTF超入門 (for 第12回セキュリティさくら)
 
xv6 + mist32 + mruby
xv6 + mist32 + mrubyxv6 + mist32 + mruby
xv6 + mist32 + mruby
 
はじめてのAndroid開発
はじめてのAndroid開発はじめてのAndroid開発
はじめてのAndroid開発
 
IPA未踏成果報告会
IPA未踏成果報告会IPA未踏成果報告会
IPA未踏成果報告会
 
Web MIDI meets DIY #0
Web MIDI meets DIY #0Web MIDI meets DIY #0
Web MIDI meets DIY #0
 
Synverll
SynverllSynverll
Synverll
 
Midi with android
Midi with androidMidi with android
Midi with android
 
Processing資料(6) 様々な図形
Processing資料(6) 様々な図形Processing資料(6) 様々な図形
Processing資料(6) 様々な図形
 
Processing資料(5) 正弦波と極座標
Processing資料(5) 正弦波と極座標Processing資料(5) 正弦波と極座標
Processing資料(5) 正弦波と極座標
 
自作x86エミュレータの終焉
自作x86エミュレータの終焉自作x86エミュレータの終焉
自作x86エミュレータの終焉
 
Javaで作る超簡易x86エミュレータ
Javaで作る超簡易x86エミュレータJavaで作る超簡易x86エミュレータ
Javaで作る超簡易x86エミュレータ
 
バイナリで遊ぼう(オープンソースカンファレンス2014 Tokyo/Fall ライトニングトーク)
バイナリで遊ぼう(オープンソースカンファレンス2014 Tokyo/Fall ライトニングトーク)バイナリで遊ぼう(オープンソースカンファレンス2014 Tokyo/Fall ライトニングトーク)
バイナリで遊ぼう(オープンソースカンファレンス2014 Tokyo/Fall ライトニングトーク)
 
Processing資料(1) Processingの基本
Processing資料(1) Processingの基本Processing資料(1) Processingの基本
Processing資料(1) Processingの基本
 
Processing資料(2) 再帰
Processing資料(2) 再帰Processing資料(2) 再帰
Processing資料(2) 再帰
 

Similar a バイナリより低レイヤな話 (プロセッサの心を読み解く) - カーネル/VM探検隊@北陸1

本当にわかる Spectre と Meltdown
本当にわかる Spectre と Meltdown本当にわかる Spectre と Meltdown
本当にわかる Spectre と MeltdownHirotaka Kawata
 
XenServerによるお手軽開発サーバ運用
XenServerによるお手軽開発サーバ運用XenServerによるお手軽開発サーバ運用
XenServerによるお手軽開発サーバ運用Shinya Okano
 
SpectreとMeltdown:最近のCPUの深い話
SpectreとMeltdown:最近のCPUの深い話SpectreとMeltdown:最近のCPUの深い話
SpectreとMeltdown:最近のCPUの深い話LINE Corporation
 
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会Hirotaka Kawata
 
C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1信之 岩永
 
Programming camp 2008, Codereading
Programming camp 2008, CodereadingProgramming camp 2008, Codereading
Programming camp 2008, CodereadingHiro Yoshioka
 
Graviton2プロセッサの性能特性と適用箇所/Supership株式会社 中野 豊
Graviton2プロセッサの性能特性と適用箇所/Supership株式会社 中野 豊Graviton2プロセッサの性能特性と適用箇所/Supership株式会社 中野 豊
Graviton2プロセッサの性能特性と適用箇所/Supership株式会社 中野 豊Supership株式会社
 
hbstudy#6LTyuzorock
hbstudy#6LTyuzorockhbstudy#6LTyuzorock
hbstudy#6LTyuzorockyuzorock
 
リバースエンジニアリングのための新しいトレース手法 - PacSec 2010
リバースエンジニアリングのための新しいトレース手法 - PacSec 2010リバースエンジニアリングのための新しいトレース手法 - PacSec 2010
リバースエンジニアリングのための新しいトレース手法 - PacSec 2010Tsukasa Oi
 
Interop 2017 in huawei booth
Interop 2017 in huawei boothInterop 2017 in huawei booth
Interop 2017 in huawei boothTomohiro Hirano
 
【学習メモ#4th】12ステップで作る組込みOS自作入門
【学習メモ#4th】12ステップで作る組込みOS自作入門【学習メモ#4th】12ステップで作る組込みOS自作入門
【学習メモ#4th】12ステップで作る組込みOS自作入門sandai
 
IT Pro のための PowerShell スクリプティング
IT Pro のための PowerShell スクリプティングIT Pro のための PowerShell スクリプティング
IT Pro のための PowerShell スクリプティングKazuki Takai
 
Code Reading at Security and Programming camp 2011
Code Reading at Security and Programming camp 2011 Code Reading at Security and Programming camp 2011
Code Reading at Security and Programming camp 2011 Hiro Yoshioka
 
もしも… Javaでヘテロジニアスコアが使えたら…
もしも… Javaでヘテロジニアスコアが使えたら…もしも… Javaでヘテロジニアスコアが使えたら…
もしも… Javaでヘテロジニアスコアが使えたら…Yasumasa Suenaga
 
OpenStack with OpenFlow
OpenStack with OpenFlowOpenStack with OpenFlow
OpenStack with OpenFlowToshiki Tsuboi
 
Apache Auroraの始めかた
Apache Auroraの始めかたApache Auroraの始めかた
Apache Auroraの始めかたMasahito Zembutsu
 
Programming camp code reading
Programming camp code readingProgramming camp code reading
Programming camp code readingHiro Yoshioka
 
OpeLa: セルフホストなOSと言語処理系を作るプロジェクト
OpeLa: セルフホストなOSと言語処理系を作るプロジェクトOpeLa: セルフホストなOSと言語処理系を作るプロジェクト
OpeLa: セルフホストなOSと言語処理系を作るプロジェクトuchan_nos
 
【学習メモ#7th】12ステップで作る組込みOS自作入門
【学習メモ#7th】12ステップで作る組込みOS自作入門 【学習メモ#7th】12ステップで作る組込みOS自作入門
【学習メモ#7th】12ステップで作る組込みOS自作入門 sandai
 

Similar a バイナリより低レイヤな話 (プロセッサの心を読み解く) - カーネル/VM探検隊@北陸1 (20)

本当にわかる Spectre と Meltdown
本当にわかる Spectre と Meltdown本当にわかる Spectre と Meltdown
本当にわかる Spectre と Meltdown
 
XenServerによるお手軽開発サーバ運用
XenServerによるお手軽開発サーバ運用XenServerによるお手軽開発サーバ運用
XenServerによるお手軽開発サーバ運用
 
SpectreとMeltdown:最近のCPUの深い話
SpectreとMeltdown:最近のCPUの深い話SpectreとMeltdown:最近のCPUの深い話
SpectreとMeltdown:最近のCPUの深い話
 
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会
 
C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1
 
Programming camp 2008, Codereading
Programming camp 2008, CodereadingProgramming camp 2008, Codereading
Programming camp 2008, Codereading
 
Graviton2プロセッサの性能特性と適用箇所/Supership株式会社 中野 豊
Graviton2プロセッサの性能特性と適用箇所/Supership株式会社 中野 豊Graviton2プロセッサの性能特性と適用箇所/Supership株式会社 中野 豊
Graviton2プロセッサの性能特性と適用箇所/Supership株式会社 中野 豊
 
hbstudy#6LTyuzorock
hbstudy#6LTyuzorockhbstudy#6LTyuzorock
hbstudy#6LTyuzorock
 
リバースエンジニアリングのための新しいトレース手法 - PacSec 2010
リバースエンジニアリングのための新しいトレース手法 - PacSec 2010リバースエンジニアリングのための新しいトレース手法 - PacSec 2010
リバースエンジニアリングのための新しいトレース手法 - PacSec 2010
 
Interop 2017 in huawei booth
Interop 2017 in huawei boothInterop 2017 in huawei booth
Interop 2017 in huawei booth
 
【学習メモ#4th】12ステップで作る組込みOS自作入門
【学習メモ#4th】12ステップで作る組込みOS自作入門【学習メモ#4th】12ステップで作る組込みOS自作入門
【学習メモ#4th】12ステップで作る組込みOS自作入門
 
IT Pro のための PowerShell スクリプティング
IT Pro のための PowerShell スクリプティングIT Pro のための PowerShell スクリプティング
IT Pro のための PowerShell スクリプティング
 
Code Reading at Security and Programming camp 2011
Code Reading at Security and Programming camp 2011 Code Reading at Security and Programming camp 2011
Code Reading at Security and Programming camp 2011
 
もしも… Javaでヘテロジニアスコアが使えたら…
もしも… Javaでヘテロジニアスコアが使えたら…もしも… Javaでヘテロジニアスコアが使えたら…
もしも… Javaでヘテロジニアスコアが使えたら…
 
Mt basic as-os_on_danbot
Mt basic as-os_on_danbotMt basic as-os_on_danbot
Mt basic as-os_on_danbot
 
OpenStack with OpenFlow
OpenStack with OpenFlowOpenStack with OpenFlow
OpenStack with OpenFlow
 
Apache Auroraの始めかた
Apache Auroraの始めかたApache Auroraの始めかた
Apache Auroraの始めかた
 
Programming camp code reading
Programming camp code readingProgramming camp code reading
Programming camp code reading
 
OpeLa: セルフホストなOSと言語処理系を作るプロジェクト
OpeLa: セルフホストなOSと言語処理系を作るプロジェクトOpeLa: セルフホストなOSと言語処理系を作るプロジェクト
OpeLa: セルフホストなOSと言語処理系を作るプロジェクト
 
【学習メモ#7th】12ステップで作る組込みOS自作入門
【学習メモ#7th】12ステップで作る組込みOS自作入門 【学習メモ#7th】12ステップで作る組込みOS自作入門
【学習メモ#7th】12ステップで作る組込みOS自作入門
 

Más de Hirotaka Kawata

KotlinConf 2018 から見る 最近の Kotlin サーバーサイド事情
KotlinConf 2018 から見る 最近の Kotlin サーバーサイド事情KotlinConf 2018 から見る 最近の Kotlin サーバーサイド事情
KotlinConf 2018 から見る 最近の Kotlin サーバーサイド事情Hirotaka Kawata
 
Micro Python で組み込み Python
Micro Python で組み込み PythonMicro Python で組み込み Python
Micro Python で組み込み PythonHirotaka Kawata
 
Introduction of PyCon JP 2014 in PyCon SG
Introduction of PyCon JP 2014 in PyCon SGIntroduction of PyCon JP 2014 in PyCon SG
Introduction of PyCon JP 2014 in PyCon SGHirotaka Kawata
 
産学間連携推進室(AC部屋) 2012 成果報告会
産学間連携推進室(AC部屋) 2012 成果報告会産学間連携推進室(AC部屋) 2012 成果報告会
産学間連携推進室(AC部屋) 2012 成果報告会Hirotaka Kawata
 
seccamp2012 チューター発表
seccamp2012 チューター発表seccamp2012 チューター発表
seccamp2012 チューター発表Hirotaka Kawata
 
Open Design Computer Project - Tsukuba.pm
Open Design Computer Project - Tsukuba.pmOpen Design Computer Project - Tsukuba.pm
Open Design Computer Project - Tsukuba.pmHirotaka Kawata
 
About University of Tsukuba Linux User Group
About University of Tsukuba Linux User GroupAbout University of Tsukuba Linux User Group
About University of Tsukuba Linux User GroupHirotaka Kawata
 

Más de Hirotaka Kawata (7)

KotlinConf 2018 から見る 最近の Kotlin サーバーサイド事情
KotlinConf 2018 から見る 最近の Kotlin サーバーサイド事情KotlinConf 2018 から見る 最近の Kotlin サーバーサイド事情
KotlinConf 2018 から見る 最近の Kotlin サーバーサイド事情
 
Micro Python で組み込み Python
Micro Python で組み込み PythonMicro Python で組み込み Python
Micro Python で組み込み Python
 
Introduction of PyCon JP 2014 in PyCon SG
Introduction of PyCon JP 2014 in PyCon SGIntroduction of PyCon JP 2014 in PyCon SG
Introduction of PyCon JP 2014 in PyCon SG
 
産学間連携推進室(AC部屋) 2012 成果報告会
産学間連携推進室(AC部屋) 2012 成果報告会産学間連携推進室(AC部屋) 2012 成果報告会
産学間連携推進室(AC部屋) 2012 成果報告会
 
seccamp2012 チューター発表
seccamp2012 チューター発表seccamp2012 チューター発表
seccamp2012 チューター発表
 
Open Design Computer Project - Tsukuba.pm
Open Design Computer Project - Tsukuba.pmOpen Design Computer Project - Tsukuba.pm
Open Design Computer Project - Tsukuba.pm
 
About University of Tsukuba Linux User Group
About University of Tsukuba Linux User GroupAbout University of Tsukuba Linux User Group
About University of Tsukuba Linux User Group
 

バイナリより低レイヤな話 (プロセッサの心を読み解く) - カーネル/VM探検隊@北陸1