English / 日本語
← 基礎編の入口へ戻る 第7章:第3部・必要なぶんだけ組み立てる

第7章 「モジュールを組み合わせる」の正体

この章のねらい。 第3部のテーマは 「必要なぶんだけ」。その入口で、まず 「モジュール」という言葉を、2つに切り分けます。① ISAの語彙(契約側:RV32I+拡張)と、② ハードの部品(機械側:ALU・FPUなど)。この二つは別ものです。そして――語彙を増やすと、それを実行する部品が要る。だから「要る語彙だけ」を選べば、「要る部品だけ」の小さなチップが作れる。これが“組み合わせ”の正体です。

7.1 「モジュール」には、2種類ある

「モジュールを組み合わせる」と言うとき、じつは性格のちがう2つを、混同しがちです。まず、ここを切り分けます。

序章で言った 「契約と機械は別もの」 が、ここでもそのまま効いています。語彙は契約、部品は機械。混ぜずに、まず分けて考えます。

7.2 ① ISAの語彙 ― ベース1つ + 拡張いくつでも

語彙のほうは、「ベース1つ + 拡張いくつでも」で組み立てます。ベースは RV32IRV64I(必ず1つ)。拡張は M(掛け算)・A(アトミック)・FD(小数)・C(圧縮)…(必要なだけ)。足したものを並べて RV32IMC のように名づける――名前が、そのまま語彙の一覧です。(拡張ひとつずつの中身は、次の第8章でカタログにします。)

7.3 ② ハードの部品 ― 語彙に対応する金物

ここが、この章のかなめです。語彙を1つ足すと、それを実行する部品が要ります。掛け算の語彙(M)を足す→乗算器が要る。小数の語彙(FD)を足す→FPUが要る。基本整数(I)→ALU語彙(契約)と部品(機械)は、対応しているのです。

ISAの語彙と、ハードの部品は対応する 基本整数IにはALU、掛け算MのMには乗算器、アトミックAにはメモリの仕組み、小数F/DにはFPU、圧縮Cにはデコーダの工夫が対応する。語彙を足すと部品が要る。 ISAの語彙(契約) ハードの部品(機械) I(基本整数) ALU +M(掛け算・割り算) 乗算器・除算器 +A(アトミック) メモリの仕組み +F・D(小数) FPU(浮動小数点) +C(圧縮) デコーダの工夫 語彙(契約)を足すと、対応する部品(機械)が要る。
ISAの語彙(左)を1つ足すと、それを実行するハードの部品(右)が要ります。要らない語彙を載せなければ、対応する部品も要らない――だから小さく、省電力にできます。

7.4 だから「必要なぶんだけ」

この対応が分かると、「必要なぶんだけ」の意味が、はっきりします。要らない語彙を載せなければ、対応する部品も要らない=小さく、省電力(第6章)。逆に、語彙だけ足して部品がないと、その命令は(そのままでは)動きません。語彙と部品を、過不足なくそろえる――これが、自分チップを「選んで組む」ということです。

設計者はここで決める。 何を:どの語彙(拡張)を選び、それに見合う部品を載せるか。どう決める:用途が要る計算から、語彙を選ぶ(小数を使わないなら FD は入れない=FPUも積まない)。なぜ:語彙ひとつにつき部品がひとつ増え、面積と電力を食うから。要る語彙だけ=要る部品だけ=小さく省電力。第6章の「小さく、単純に」を、ここで具体化します。

7.5 まとめ

この章は、どの判断のための知識か。 「語彙(契約)と部品(機械)は対応する」と分かると、自分チップで 命令セットの“装備”を選ぶとき、その裏でどんな部品が増えるか(=面積・電力)まで見通せます。序章の“決めることマップ”でいう 「拡張」 の領域そのもの。次の第8章では、その語彙の拡張を一つずつ、何のため・どんな部品が要るか・いつ選ぶかで見ていきます。