English / 日本語
← 基礎編の入口へ戻る 序章:導入・全体像

序章 コンピュータアーキテクチャって、そもそも何?

この章のねらい。 つかんでいただきたいのは、ふたつです。ひとつは、「コンピュータアーキテクチャ」とは何か――その正体は、3つの層に整理できます。もうひとつは、この基礎編で私たちが実際にやることは、CPUを一から設計することではなく、できあいの部品を「選び・組み・確かめる」こと、という見取り図です。むずかしい計算は出てきません。机の上にブロックを並べていく、その準備の章だと思ってください。

序.1 「契約」を履行するのは、だれか

読み物『チップのカンブリア爆発』の第3章に、命令セット(ISA)=見えない契約という話がありました。ソフトとハードのあいだで交わされ、誰も意識しないのに全員が従っている――その取り決めのことです。

ただ、契約というからには、当事者が二者います。契約を使う側の「ソフトウェア」と、その契約を実際に履行する「機械」です。読み物は、契約こそ説明してくれましたが、それを履行する機械のほうは、まだ触れていません。この基礎編は、その機械を理解しにいくコーナーです。機械の姿が分かると、「だからISA(契約)は、こういう形になっているのか」と、整理できます。

序.2 コンピュータアーキテクチャ=3つの層

「コンピュータアーキテクチャ」という言葉には、実は、はっきりした由来があります。1964年、IBMの大型機 System/360 の設計者たちが、こう定義しました――「プログラマから見たときの、システムの姿」。中で実際にどう作られているか(回路や配線)とは切り離して、外から見える約束事を指す言葉だ、という意味です。

ここが肝心です。厳密な意味での「アーキテクチャ」は、いちばん上の層=契約(ISA)そのものを指します。では、その契約を履行する機械――ALUやレジスタをどう組み、どんな順番で命令を流すか――のほうは、何と呼ぶのでしょう。これはマイクロアーキテクチャと呼んで、アーキテクチャとは区別します。そしてその下に、トランジスタや配線という物理の実体=実装の層があります。図にすると、こうなります。

コンピュータアーキテクチャの3つの層 上からアーキテクチャ(ISA・約束事)、マイクロアーキテクチャ(機械の中身)、実装(回路・物理)の3層。それぞれ読み物・第3章、この基礎編、LibreLane講座に対応する。 上=ソフトウェアから見た姿 アーキテクチャ(ISA) ソフトから見える“約束事” マイクロアーキテクチャ 約束を果たす“機械の中身” 実装(回路・物理) トランジスタと配線そのもの 下=物理(モノ)としての実体 読み物・第3章 ★ この基礎編 LibreLane講座
同じ「契約(ISA)」でも、それを果たす「機械(マイクロアーキテクチャ)」は何通りもある。読み物が契約を、この基礎編が機械を、いちばん下の物理は製造(LibreLane講座)が扱う。
三つの層、ことばの整理。
アーキテクチャ(ISA)=契約。命令やレジスタの“見え方”。読み物で扱った層。
マイクロアーキテクチャ=その契約を果たす機械の組み立て方。この基礎編の主役。
実装=トランジスタ・配線という物理の実体。

そして、この言葉には、広い意味と狭い意味の二通りの使われ方があります。大学の講義や教科書でいう「コンピュータアーキテクチャ」は、上の2層をまとめた広い意味。一方、語の厳密な意味はいちばん上(契約)だけ。だからこの基礎編のタイトルを「CPUのしくみ」にしました。主役は真ん中の層(機械)で、それを「命令セットの裏側」と呼んでいる、というわけです。

序.3 同じ契約でも、機械は別 ― だから分けて考える

なぜ「契約」と「機械」を、わざわざ分けて考えるのか。例を見るのがいちばん早いでしょう。スマートフォンの省電力コアと、パソコン級の高性能コアが、まったく同じ命令セット(契約)なのに、中の組み立て方はまるで違う――そういうことが、実際によくあります。契約が同じなら、同じソフトが動く。けれど、速さも消費電力も別物です。契約は共有し、機械は選ぶ。この感覚が、基礎編全体の土台になります。

序.4 で、私たちは基礎編で“何をやる”のか

ここで、ひとつ正直に言っておきます。このあと第3章で出てくる「命令が5つの手順を通る流れ」――フェッチ、デコード、演算…という、あの仕組み。実は1980年代にほぼ解かれた、ずいぶん古い話です。ですから私たちは、その機械を一から設計し直したりはしません

読み物・第5章で「RISC-Vが“言葉”を開いた」という話がありました。これはつまり、契約を履行する“機械”のほうも、すでに完成品が無償で公開されている、という意味でもあります。だから、私たちの仕事はこうなります――ゼロから発明するのではなく、選び、設定し、組み上げ、確かめる。次の地図を見てください。

自分チップで私たちが決めることの地図 左にオープン資源(既存コア、RISC-V ISA、LibreLane、SkyWater PDK、検証用FPGA)。中央に私たちが決める4領域(頭脳、記憶、周辺、物理)。右に検証してテープアウトし自分チップへ至る流れ。 使える資源 既存コア RISC-V ISA LibreLane SkyWater PDK 検証用FPGA 選ぶだけ あなたが決めること 頭脳 コア・拡張・工程数 記憶 量と構成 周辺 接続・バス 物理 クロック・工程 組み上げ FPGAで検証 →テープアウト 自分チップ
左の“オープンな資源”から選び、中央の4つの領域を決め、右で検証して製造へ。基礎編は、この中央の判断を、自分の手できちんと下せるようになるための土台です。

つまり、決めることは大きく4つ。頭脳(どのCPUコアを使う/命令の拡張をどこまで/パイプラインを何工程に)、記憶(メモリの量と構成)、周辺(UART/SPIなどを、どのバスでつなぐ)、物理(クロック何MHz・電力・製造工程の面積予算)。そして使えるのは、無償のRISC-V、オープンなコア群やEDA、PDK、検証用のFPGA――“書かなくていい・選ぶだけ”の資源が一通り揃っています。

注意するポイント:「基礎を学ぶ=CPUを一から作る」ではありません。 私たちが学ぶのは、データパスを自作するためではなく、「選ぶ目」と「直す手がかり」をつかむため。工程数(単サイクル/2工程/5工程)を選ぶと速度と面積がどう動くかを判断するため。そして開発ボードが「動かない」とき、命令がどの手順で詰まっているかを切り分けるため。教科書の知識を、判断と検証の道具に化けさせる――それがこの基礎編の役割です。

序.5 この基礎編の歩き方

全体は3部構成です。そのあとに、到達点となる章と、講座への橋渡しを置きました。各章の終わりには、いつも「これは、どの判断のための知識か」を書き添えます。さきほどの“決めることマップ”の、いまどこを決めているのかを見失わないためです。

準備はいいでしょうか。次の第1章では、机の上のいちばん小さなブロック――レジスタから並べはじめます。なぜCPUに「手元の作業台」が要るのか。そこからほどいていきましょう。