『プログラマーのためのCPU入門 ― CPUは如何にしてソフトウェアを高速に実行するか』

そのプログラム、CPUの性能を引き出せますか?

ソフトウェアの価値は、ハードウェアで実行されることにより、現実のものになります。そのために不可欠なのがCPUです。したがってソフトウェアの価値は、CPUの性能、すなわち「できるだけ高速にソフトウェアを実行すること」にかかっているとも言えるでしょう。

現代のCPUの性能は、「メモリとやり取りしながら命令を実行していく」というCPUの原理的な仕組みを知るだけでは説明できません。ソフトウェアを高速に実行するためにCPUシステムが備えているパイプライン化スーパースカラ化の挙動をはじめ、アウトオブオーダー実行分岐予測キャッシュTLBといった高速化のためのハードウェア機構、さらにはI/Oシステムコールなどの例外・割り込み系がCPUの動作に及ぼす影響について、幅広く知る必要があります。

さらに、現在では広く利用されているマルチプロセッサのCPUシステムにおいては、複数のキャッシュの一貫性を制御するための仕組みがソフトウェアの実行性能に与える影響や、複数のCPUからのメモリアクセス順序を強制したり不可分操作を実現したりする仕組みをソフトウェアで明示的に利用することによる影響を考慮しなければならない場合もあります。

本書では、豊富な図説と簡潔なコードを交えながら、CPUが備える高速化のためのさまざまな仕組みとその動作を阻む要因、さらにはソフトウェアで可能な対策について、ハードウェア技術に馴染みがないプログラマーでも十分な直感を得られるように解説していきます。

本書は『n月刊ラムダノートVol.3, No.1(2021)』に掲載された記事「CPUは如何にしてソフトウェアを高速に実行するのか」を基に、同記事では概要のみ触れていた各部について掘り下げると同時に、理解を深めるためのアセンブリコードを各章に追加し、さらにマルチプロセッサに関する話題を大幅に加筆して書籍として刊行したものです。

2 冊 発売中