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

ご来店いただきありがとうございます。新刊『プログラマーのためのCPU入門 ― CPUは如何にしてソフトウェアを高速に実行するのか』発売開始のお知らせです。

ほぼすべてのソフトウェア開発者がお世話になるコンピューターの最重要パーツ、CPU。「演算をする」というざっくりした役割は知っているし、もう少し踏み込んでレジスタやアセンブリ命令、あるいはさらに踏み込んで、NAND/OR/NOT回路による演算装置といった原理を勉強したことがあるプログラマーの方も少なくないと思います。

しかし、現代のソフトウェアにおいてCPUがもたらす大きな価値は、その原理のみならず、むしろその尋常ならざる高速さにこそあるといっても過言ではないでしょう。

CPUの性能は、半導体技術の進化やハードウェア構成の妙といった物理的な要因のみによって決まるわけではありません。その裏には、パイプライン化やスーパースカラ化、さらには分岐予測やアウトオブオーダー実行、さらにはマルチプロセッサ化といった、さまざまな高速化のための工夫が隠されています。こうした工夫が組み込まれている実用的なCPUにおいては、ソフトウェアは必ずしもプログラマーが書いたコードの順番どおりには処理されません。あるいは、順番どおりに処理すべく、CPUに備わる高速化のための工夫が犠牲になる場合があります。

CPUがソフトウェアを高速に実行するために何をしているか、それがソフトウェアのどんな事情で阻害されるか、そして、できるだけ阻害されないようにするにはどうすればいいかは、ソフトウェアを書くプログラマーとしてはCPUに関して特に知りたい部分だと思います。本書では、こうした「プログラマーだからこそ興味を持てる視点」から、現代の実用的なCPUを支える高度なトピックを解説していきます。

CPUの仕組みからでなく、ソフトウェアがCPUでどう高速に処理されるかという観点から、CPUに注ぎ込まれた叡智を解きほぐすツアーをお楽しみください。

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