7章プロセッサを理解する

正しい並行コードを書くには「2章 アトミック操作」「3章 メモリオーダリング」で学んだ理論だけで十分ではあるのだが、プロセッサレベルで実際に何が起こっているのかを大まかに理解しておくことも大いに役に立つはずだ。本章では、アトミック操作がコンパイルされるターゲットとなる、機械語命令を説明する。プロセッサによる相違や、なぜcompare_exchangeにはweak版があるのか、個々の命令という最も低いレベルでメモリオーダリングはどのような意味を持つのか、これらすべてにキャッシュがどう関連するのか、などを解説する。

本書の目的は、すべてのプロセッサアーキテクチャに対して関連する詳細をすべて理解することではない。そうするには、まだ書かれていない本や一般には発売されていないような本を含めて、本棚いっぱいの本が必要になるだろう。本章では、アトミックが関連するコードを実装し最適化する際によい判断ができるように、プロセッサレベルでアトミックがどのように機能するかを大まかに理解することを目的とする。もちろん、抽象的な理論を離れて、舞台裏で何が起こっているのかを知りたい、という単純に好奇心を満足させることも目的だ。

議論を可能な限り具体的にするために、2つのプロセッサアーキテクチャに焦点を当てる。

x86-64
x86アーキテクチャの64ビット版で、大半のラップトップ、デスクトップ、サーバ、一部のゲーム機で使われているIntelとAMDのプロセッサで実装されている。x86アーキテクチャはもともと16ビットで、その後広く使われる32ビット拡張がIntelによって作られた。現在x86-64と呼ばれる64ビットバージョンはもともとAMDが開発した拡張で、AMD64とも呼ばれる。Intelも、IA-64という64ビットアーキテクチャを開発したが、結局はより広く使われるようになったAMDのx86拡張を(IA-32e、EM64T、後にIntel ...

Get 詳解 Rustアトミック操作とロック ―並行処理実装のための低レイヤプログラミング now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.