RISCの利点と欠点
端的に言えば、RISCは「パイプラインを高速に動作させる」ことを主眼にした設計である。この目的を考えると、可変命令長ではデコードに手間が掛かるので、固定命令長の方が有利である。また演算対象がメモリーだったり、間接アドレスだったりと異なるのは、処理の際に余分な時間が掛かることになるので、演算対象はすべてレジスターのみに限った。もちろん、それではレジスターしか触れないので、メモリーとレジスター間でのロード/ストア命令は別に用意する。
マイクロコードを廃するのも同じ理由だ。マイクロコード経由でのデコードでは時間が掛かるので、デコーダーはすべてハードワイヤードで構成されている。レジスター間演算のみに限ると、当然必要となるレジスターの数が増えるので、これにあわせて利用できるレジスターを大幅に増やす。
また、ロード/ストア命令は当然メモリーアクセスが発生するので、処理が遅くなる。これを通常のパイプライン処理で行なうとパイプラインストールが発生してしまうので、これを避けるために遅延スロットを用意。処理に時間が掛かる命令は別に進行させて、パイプラインの動きを阻害しないようにした。
すくなくとも1980年代の半導体製造技術では、この目論見は非常にうまくいった。RISCアーキテクチャーを採用したプロセッサーとしては、MIPSの「R2000/R3000」やSunの「SPARC」、AMDの「Am29000」やインテルの「インテル960」など多岐に渡っており、いずれもそれなりの性能を実現することに成功している。
その理由はいろいろあるが、やはり複雑なx86命令を、そのままの形で高速にデコードしたり実行するのは無理があった、という結論になる。もちろんRISC系にも欠点があり、それは命令数が増える傾向にあることだ。x86の加算命令を例に見てみよう。
- ADD r/m32, r32
これは「レジスター(r)かメモリー(m)の値(左の引数1)」とレジスター(右の引数2)を加算し、結果をひとつめの引数の場所に戻すというものだ。この命令でメモリーアクセスした場合と同じことをRISC系でやろうとすると、以下のようになる。
- load r001, Mem
- add r003, r001, r002
- store r003, Mem
まずメモリーの値をr001にロードする。次に「r003=r001+r002」というレジスタ間の加算を行ない、最後にr003の結果を先ほどのメモリーの場所に書き戻すというものだ。つまり同じ処理をするのに、RISC系だと3倍の命令を実行しなければいけない場合すらあるわけだ。
また初期のRISCプロセッサーの場合、1クロックで演算を実行できるように「複雑な演算は実装しない」ようにしており、整数の乗算すらなかったものもある(ソフトウェアとして実装することになる。そうした欠点を埋めても、なお余りあるほど(当時としては)高速に動作したのがRISCだった。
この連載の記事
-
第767回
PC
Lunar LakeはWindows 12の要件である40TOPSを超えるNPU性能 インテル CPUロードマップ -
第766回
デジタル
Instinct MI300のI/OダイはXCDとCCDのどちらにも搭載できる驚きの構造 AMD GPUロードマップ -
第765回
PC
GB200 Grace Blackwell SuperchipのTDPは1200W NVIDIA GPUロードマップ -
第764回
PC
B100は1ダイあたりの性能がH100を下回るがAI性能はH100の5倍 NVIDIA GPUロードマップ -
第763回
PC
FDD/HDDをつなぐため急速に普及したSASI 消え去ったI/F史 -
第762回
PC
測定器やFDDなどどんな機器も接続できたGPIB 消え去ったI/F史 -
第761回
PC
Intel 14Aの量産は2年遅れの2028年? 半導体生産2位を目指すインテル インテル CPUロードマップ -
第760回
PC
14nmを再構築したIntel 12が2027年に登場すればおもしろいことになりそう インテル CPUロードマップ -
第759回
PC
プリンター接続で業界標準になったセントロニクスI/F 消え去ったI/F史 -
第758回
PC
モデムをつなぐのに必要だったRS-232-CというシリアルI/F 消え去ったI/F史 -
第757回
PC
「RISC-VはArmに劣る」と主張し猛烈な批判にあうArm RISC-Vプロセッサー遍歴 - この連載の一覧へ