English / 日本語
← 基礎編の入口へ戻る
第7章:第3部・必要なぶんだけ組み立てる
第7章 「モジュールを組み合わせる」の正体
この章のねらい。 第3部のテーマは 「必要なぶんだけ」。その入口で、まず 「モジュール」という言葉を、2つに切り分けます。① ISAの語彙(契約側:RV32I+拡張)と、② ハードの部品(機械側:ALU・FPUなど)。この二つは別ものです。そして――語彙を増やすと、それを実行する部品が要る。だから「要る語彙だけ」を選べば、「要る部品だけ」の小さなチップが作れる。これが“組み合わせ”の正体です。
7.1 「モジュール」には、2種類ある
「モジュールを組み合わせる」と言うとき、じつは性格のちがう2つを、混同しがちです。まず、ここを切り分けます。
- ① ISAの語彙(契約側)。 命令の取り決めです。
RV32Iという土台に、M・F・C… という拡張を足していく、“言葉”の集まり。 - ② ハードの部品(機械側)。 その語彙を実際に実行する金物です。ALU、FPU(浮動小数点ユニット)など。
序章で言った 「契約と機械は別もの」 が、ここでもそのまま効いています。語彙は契約、部品は機械。混ぜずに、まず分けて考えます。
7.2 ① ISAの語彙 ― ベース1つ + 拡張いくつでも
語彙のほうは、「ベース1つ + 拡張いくつでも」で組み立てます。ベースは RV32I/RV64I(必ず1つ)。拡張は M(掛け算)・A(アトミック)・F/D(小数)・C(圧縮)…(必要なだけ)。足したものを並べて RV32IMC のように名づける――名前が、そのまま語彙の一覧です。(拡張ひとつずつの中身は、次の第8章でカタログにします。)
7.3 ② ハードの部品 ― 語彙に対応する金物
ここが、この章のかなめです。語彙を1つ足すと、それを実行する部品が要ります。掛け算の語彙(M)を足す→乗算器が要る。小数の語彙(F/D)を足す→FPUが要る。基本整数(I)→ALU。語彙(契約)と部品(機械)は、対応しているのです。
7.4 だから「必要なぶんだけ」
この対応が分かると、「必要なぶんだけ」の意味が、はっきりします。要らない語彙を載せなければ、対応する部品も要らない=小さく、省電力(第6章)。逆に、語彙だけ足して部品がないと、その命令は(そのままでは)動きません。語彙と部品を、過不足なくそろえる――これが、自分チップを「選んで組む」ということです。
設計者はここで決める。 何を:どの語彙(拡張)を選び、それに見合う部品を載せるか。どう決める:用途が要る計算から、語彙を選ぶ(小数を使わないなら
F/D は入れない=FPUも積まない)。なぜ:語彙ひとつにつき部品がひとつ増え、面積と電力を食うから。要る語彙だけ=要る部品だけ=小さく省電力。第6章の「小さく、単純に」を、ここで具体化します。
7.5 まとめ
- モジュールは2種類。 ① ISAの語彙(契約:RV32I+拡張)と、② ハードの部品(機械:ALU・FPU…)。
- 語彙を足すと、対応する部品が要る。 M→乗算器、F/D→FPU、というように。
- だから「必要なぶんだけ」。 要る語彙だけ=要る部品だけ=小さく省電力。
この章は、どの判断のための知識か。 「語彙(契約)と部品(機械)は対応する」と分かると、自分チップで 命令セットの“装備”を選ぶとき、その裏でどんな部品が増えるか(=面積・電力)まで見通せます。序章の“決めることマップ”でいう 「拡張」 の領域そのもの。次の第8章では、その語彙の拡張を一つずつ、何のため・どんな部品が要るか・いつ選ぶかで見ていきます。