English / 日本語
← 基礎編の入口へ戻る
第8章:第3部・必要なぶんだけ組み立てる
第8章 拡張カタログ ― 何があって、何のため
この章のねらい。 第7章で「語彙を足すと、対応する部品が要る」と見ました。この章は、その拡張のカタログです。
I・M・A・F・D・C を一つずつ、何のためにあるか/載せるとどんな部品が要るか/いつ選ぶかで並べます。最後に RV32IMAC を読み解き、用途から“献立”を選ぶ感覚をつかみます。
8.1 拡張カタログ ― 一つずつ
- I(基本整数・ベース)。 足し引き、ロード/ストア、分岐など、最低限のひとそろい。これだけで、立派にCPUが成立します。要る部品=ALUとレジスタ。
RV32I(32ビット)/RV64I(64ビット)。すべての土台です。 - M(掛け算・割り算)。 整数の乗除算。
Iだけだと、掛け算は足し算のくり返しで代用=遅い。Mを足すと専用命令で速い。要る部品=乗算器・除算器(面積・電力が増える)。いつ:計算量が多い用途、信号処理など。 - A(アトミック)。 複数の処理が同じ値を、割り込まれずに安全に読み書きする命令。要る場面=マルチコアや、OS・割り込みで値を共有するとき。要る仕組み=メモリアクセスの工夫。いつ:OSを載せる/複数コア。
- F・D(浮動小数点)。 小数の計算。
F=単精度(32ビット)、D=倍精度(64ビット)。要る部品=FPU(大きめで、面積・電力をけっこう食う)。いつ:科学計算・グラフィック・音声など、小数が要るとき。要らないなら載せない(多くの組み込みは F/D なし)。 - C(圧縮)。 よく使う命令を、短い形(16ビット)でも表せるようにする。コードが小さくなる=メモリ節約。命令の取ってくる回数も減り、省電力にも効く。要る仕組み=デコーダの工夫。いつ:コードサイズが効く、小さな機器。
8.2 RV32IMAC を読み解く
拡張が分かれば、命令セットの名前はそのまま“装備一覧”として読めます。たとえば RV32IMAC は――
RV32=32ビットの土台、I=基本整数、M=乗除算、A=アトミック、C=圧縮。F/D が並びにない=小数の専用命令は持たず、FPUを積まないぶん小さくなります。8.3 用途から“献立”を選ぶ
拡張は、多く載せるほど“高機能”ですが、そのぶん部品が増え、面積も電力も食います。だから用途から、要るものだけを選ぶ。料理の献立と同じです。いくつか例を挙げます。
- 電池で動くセンサーノード(小さく・省電力が最優先)。
RV32IC――基本に圧縮だけ。掛け算も小数も要らないなら、載せない。 - 信号処理など、掛け算が多い用途。
RV32IMCやRV32IMAC――乗算器(M)を足す。 - OSを載せる、やや本格的な用途。
RV32IMACを土台に、小数が要るならF/Dを足す(よく使う一式はGとも書きます)。
設計者はここで決める。 何を:用途に要る拡張だけを選ぶ。どう決める:計算の中身から逆算する――小数を使うか? 掛け算は多いか? OSを載せるか? コードサイズは詰めたいか? なぜ:拡張ひとつごとに部品が増え、面積・電力を食うから。要るものだけ=小さく省電力。これが、自分チップの“献立”を決めるということです。
この章は、どの判断のための知識か。 拡張カタログは、序章の“決めることマップ”でいう 「拡張」 の選択肢一覧そのものです。「何があって、何のためか」が分かると、用途から過不足なく“献立”を組めるようになります。次の第9章では、ここまでの判断材料を――コア・拡張・メモリ・クロック・検証まで――一枚の「決めることシート」にまとめます。