基本的なCPUアーキテクチャ
スピーカー
たつやさん @zerokfy
発表資料
本編(22:00-23:00)
自己紹介
ハードウェア設計と組み込みソフトウェア開発の経験があり。 まだまだ若い20代。そしてイケメン。
ゴール
パイプライン 付録:MMIO(メモリマップドI/O)
本題
- コードをコンパイルするとバイナリになる
- 登場人物はRAM, CPU, Core
- 命令処理フローはIF, DEC, EXE, WBから構成される
- IF=Instruction Fetch。命令をフェッチすること。
- DEC=Decoder。命令ビット列をデコードすること。
- EXE=Execute。デコードした命令を実行すること。
- GRとデータキャッシュの違い
- WB=Write Back。演算結果をデータキャッシュに格納すること。
- パイプライン制御の動作
- パイプライン制御の問題点
- 時間のかかる命令があるとそこでつかえて全体が止まってしまう
- 対策:アウトオブオーダ(命令処理順の並べ替え)、マルチスレッド処理
付録:メモリマップドI/O
まとめ
フリートーク(23:00-24:00)
- 年明け早々、世間を騒がしているCPUの脆弱性であるメルトダウンとスペクターのしくみについて。
- 投機的実行の悪用 投機的実行…CPUはIF文のTrue/False判定が出るより前に命令を実行する(時間の節約のため) → 覗き見したい情報(/etc/passwd等)にアクセスするような命令をIF文分岐の後に書いて実行すると データキャッシュの中にデータが残ってしまう。