序章 コンピュータアーキテクチャって、そもそも何?
序.1 「契約」を履行するのは、だれか
読み物『チップのカンブリア爆発』の第3章に、命令セット(ISA)=見えない契約という話がありました。ソフトとハードのあいだで交わされ、誰も意識しないのに全員が従っている――その取り決めのことです。
ただ、契約というからには、当事者が二者います。契約を使う側の「ソフトウェア」と、その契約を実際に履行する「機械」です。読み物は、契約こそ説明してくれましたが、それを履行する機械のほうは、まだ触れていません。この基礎編は、その機械を理解しにいくコーナーです。機械の姿が分かると、「だからISA(契約)は、こういう形になっているのか」と、整理できます。
序.2 コンピュータアーキテクチャ=3つの層
「コンピュータアーキテクチャ」という言葉には、実は、はっきりした由来があります。1964年、IBMの大型機 System/360 の設計者たちが、こう定義しました――「プログラマから見たときの、システムの姿」。中で実際にどう作られているか(回路や配線)とは切り離して、外から見える約束事を指す言葉だ、という意味です。
ここが肝心です。厳密な意味での「アーキテクチャ」は、いちばん上の層=契約(ISA)そのものを指します。では、その契約を履行する機械――ALUやレジスタをどう組み、どんな順番で命令を流すか――のほうは、何と呼ぶのでしょう。これはマイクロアーキテクチャと呼んで、アーキテクチャとは区別します。そしてその下に、トランジスタや配線という物理の実体=実装の層があります。図にすると、こうなります。
・アーキテクチャ(ISA)=契約。命令やレジスタの“見え方”。読み物で扱った層。
・マイクロアーキテクチャ=その契約を果たす機械の組み立て方。この基礎編の主役。
・実装=トランジスタ・配線という物理の実体。
そして、この言葉には、広い意味と狭い意味の二通りの使われ方があります。大学の講義や教科書でいう「コンピュータアーキテクチャ」は、上の2層をまとめた広い意味。一方、語の厳密な意味はいちばん上(契約)だけ。だからこの基礎編のタイトルを「CPUのしくみ」にしました。主役は真ん中の層(機械)で、それを「命令セットの裏側」と呼んでいる、というわけです。
序.3 同じ契約でも、機械は別 ― だから分けて考える
なぜ「契約」と「機械」を、わざわざ分けて考えるのか。例を見るのがいちばん早いでしょう。スマートフォンの省電力コアと、パソコン級の高性能コアが、まったく同じ命令セット(契約)なのに、中の組み立て方はまるで違う――そういうことが、実際によくあります。契約が同じなら、同じソフトが動く。けれど、速さも消費電力も別物です。契約は共有し、機械は選ぶ。この感覚が、基礎編全体の土台になります。
序.4 で、私たちは基礎編で“何をやる”のか
ここで、ひとつ正直に言っておきます。このあと第3章で出てくる「命令が5つの手順を通る流れ」――フェッチ、デコード、演算…という、あの仕組み。実は1980年代にほぼ解かれた、ずいぶん古い話です。ですから私たちは、その機械を一から設計し直したりはしません。
読み物・第5章で「RISC-Vが“言葉”を開いた」という話がありました。これはつまり、契約を履行する“機械”のほうも、すでに完成品が無償で公開されている、という意味でもあります。だから、私たちの仕事はこうなります――ゼロから発明するのではなく、選び、設定し、組み上げ、確かめる。次の地図を見てください。
つまり、決めることは大きく4つ。頭脳(どのCPUコアを使う/命令の拡張をどこまで/パイプラインを何工程に)、記憶(メモリの量と構成)、周辺(UART/SPIなどを、どのバスでつなぐ)、物理(クロック何MHz・電力・製造工程の面積予算)。そして使えるのは、無償のRISC-V、オープンなコア群やEDA、PDK、検証用のFPGA――“書かなくていい・選ぶだけ”の資源が一通り揃っています。
序.5 この基礎編の歩き方
全体は3部構成です。そのあとに、到達点となる章と、講座への橋渡しを置きました。各章の終わりには、いつも「これは、どの判断のための知識か」を書き添えます。さきほどの“決めることマップ”の、いまどこを決めているのかを見失わないためです。
- 第1部・機械を分解する(第1〜3章)。 レジスタ → 部品カタログ → 5つの手順の流れ。机の上にブロックを並べ、一台のCPUを組み上げます。
- 第2部・契約の書き方で機械が変わる(第4〜6章)。 CISCとRISC → MIPS → 省電力。なぜRISC-Vコアを選ぶのか、電力や工程をどう置くのか。
- 第3部・必要なぶんだけ組み立てる(第7〜8章)。 モジュール式ISAの正体 → 拡張カタログ。「載せる/載せない」を自分で決められるように。
- 第9章・決めることシート。 学んだ判断材料を、一枚の表に。これが基礎編の到達点です。
- 終章・だから命令セットはこう設計される。 機械を見たいま、ISA(契約)の形に“理由”が見える。そして手を動かす――FPGA講座へ受け渡します。
準備はいいでしょうか。次の第1章では、机の上のいちばん小さなブロック――レジスタから並べはじめます。なぜCPUに「手元の作業台」が要るのか。そこからほどいていきましょう。