単純で固定長の命令に絞り高速実行を狙うCPUの設計思想(ARMなど)
RISC(Reduced Instruction Set Computer = 縮小命令セットコンピュータ)とは、命令を単純なものだけに絞り込み、その分1命令を高速に実行することを狙ったCPU(=コンピュータの計算の中心となる部品)の設計思想です。「リスク」と読みます。
身近な例で考えると、「工場の流れ作業(ベルトコンベア)」に似ています。1人ひとりの作業者がやることをごく単純な1工程に絞ると、誰も手が止まらず、製品が次々に流れていきます。RISCも、命令を「これ以上分けられない単純な作業」に揃えることで、命令を途切れなく高速に処理できるようにしているのです。
上の図解では、CISCなら MUL [X],[Y] という1命令で済む処理を、RISCでは「読む・読む・掛ける・書く」という単純な命令の組み合わせで実現する様子を示しています。命令1つあたりの仕事は減りますが、その分すべての命令が高速に流れます。
RISCの命令には、CISCと対照的な次の特徴があります。
・命令の種類が少ない:本当に必要な数十種類の単純な命令だけに絞る
・命令長が固定長:すべての命令が同じ長さ(例:4バイト)で揃っている
・1命令1クロックで実行:単純なので、ほぼ1命令を1クロック(CPUの最小時間単位)で処理できる
・ロード/ストアアーキテクチャ:計算はレジスタ(CPU内部の小さな記憶場所)同士でのみ行い、メモリとのやり取りは専用命令だけに限定する
特に重要なのが固定長命令です。図解の中段左にあるように、すべての命令が同じバイト数なので、CPUは「次の命令がどこから始まるか」を一定の間隔で判断できます。これにより命令の解読が単純になり、パイプライン処理(命令を流れ作業で重ねて実行する高速化手法)と非常に相性が良くなります。図解の中段右が、命令が等間隔で重なって流れる様子です。
メリットとデメリットを整理すると、メリットは「回路が単純なので高速・省電力にしやすく、パイプラインで性能を上げやすい」点。デメリットは「1命令の機能が小さいため、同じ処理に必要な命令数(プログラムの長さ)が増える」点です。コンパイラ(=人が書いたプログラムをCPUの命令に変換するソフト)の進化で、この弱点はかなり補われています。
RISCの最も身近な代表例が、スマートフォンやタブレットに使われているARMアーキテクチャです。消費電力が小さく発熱も抑えられるため、バッテリー駆動の機器に向いており、世界中のスマホのほぼすべてがARM系CPUを搭載しています。
代表例として覚えておきたいのは次の通りです。
・ARM:スマホ・タブレット・組込み機器で圧倒的シェア
・RISC-V(リスクファイブ):誰でも無償で使えるオープンな命令セットとして近年注目
・Apple Silicon(M系チップ):MacにもARM系RISCが採用された例
・MIPS・SPARC・PowerPC:古くからの代表的RISC
上の比較表のとおり、CISCとRISCは「命令数・命令長・実行速度・パイプライン適性」のすべてで対照的です。「CISC=x86=多機能・可変長」「RISC=ARM=単純・固定長・高速」とペアで整理するとわかりやすく、RISCはパイプライン処理と相性が良い、という関係も合わせて押さえておくとよいでしょう。
結論:RISCが高速な理由は「命令を解読する手間が少なく、パイプラインが詰まらないから」です。
CPUは命令を実行するとき、① 命令を取得(Fetch)→ ② 内容を解読(Decode)→ ③ 計算(Execute)→ ④ メモリ操作(Memory)→ ⑤ 結果を書込み(Write Back)の5段階で処理します。これをパイプライン(=流れ作業)と呼びます。
CISCでは命令の長さがバラバラ(可変長)なため、②の解読ステップで「この命令は何バイトか?」を毎回調べる必要があります。長い命令や複雑な命令が混じると解読に時間がかかり、後続の命令が待たされてパイプラインが渋滞(ストール)します。
RISCでは全命令が固定長(例:必ず4バイト)で、内容も単純です。CPUは「次の命令は必ず4バイト先」と分かるため、解読を待たずに次の命令をどんどん先読みできます。結果として5段階が途切れなく流れ、複数の命令を同時並行で処理することができるのです。上の図の下段が、5段階がすき間なく重なって流れる様子です。
CISCとRISCは、「複雑さをハードウェアで吸収するか、ソフトウェアで吸収するか」という根本的な設計思想の違いがあります。
CISCの考え方:「プログラマの負担を減らすため、CPUに高機能な命令を持たせよう」。メモリとメモリを直接計算する命令など、複雑な命令を1つにまとめてCPU回路に焼き込みます。プログラムの行数は短くなりますが、CPU回路が複雑になり、消費電力も増えます。代表はパソコンやサーバに使われているx86(インテル・AMD系)です。
RISCの考え方:「CPUはとにかく単純・高速にして、複雑な処理はコンパイラ(プログラムをCPU命令に変換するソフト)に組み合わせさせよう」。回路が単純になる分、省電力・高速・低発熱を実現しやすくなります。
どちらが絶対に優れているというわけではなく、用途によって使い分けられています。大量計算を省電力でこなしたいスマホや組込み機器にはRISC(ARM)、互換性を重視するパソコン・サーバにはCISC(x86)が多く採用されています。最近はx86のCPUも内部でRISC的な処理に変換してから実行するなど、両者の境界は薄れてきています。