
電子工学およびコンピュータ科学において、RISC(Reduced Instruction Set Computer、発音は「リスク」)は、タスクを実行するためにコンピュータに与えられる個々の命令を簡素化するように設計されたコンピュータアーキテクチャです。CISC( Complex Instruction Set Computer)に与えられる命令と比較すると、RISCコンピュータは、個々の命令がより単純な操作を実行するため、タスクを実行するためにより多くのマシンコードを必要とする場合があります。目標は、各命令の速度を上げることによって、より多くの命令を処理する必要性を相殺することであり、特に、より単純な命令であれば実現が容易な命令パイプラインを実装することによって実現されます。[ 1 ]
RISCコンピュータの主要な動作概念は、各命令が1つの機能のみを実行することです(たとえば、メモリからレジスタに値をコピーするなど)。RISCコンピュータは通常、ロードストアアーキテクチャを採用した高速汎用レジスタを多数(16個または32個)備えており、算術演算やテストを実行する命令はレジスタのみを操作し、コンピュータのメインメモリ内のデータにアクセスする命令は、メモリからレジスタにデータをロードするか、レジスタからメモリにデータをストアするだけです。CPUの設計により、RISCコンピュータは少数の単純なアドレッシングモード[ 2 ]と予測可能な命令時間を実現でき、システム全体の設計が簡素化されます。
RISCコンピュータアーキテクチャの概念開発は、1970年代後半のIBM 801プロジェクトから始まったが、すぐに実用化されたわけではなかった。カリフォルニアの設計者たちは、スタンフォードMIPSとバークレーRISCという2つの重要なプロジェクトで801の概念を取り入れた。これらは1980年代にMIPSとSPARCシステムとして商用化された。IBMは最終的に、801の概念をさらに発展させたIBM POWERアーキテクチャ、PowerPC、Power ISAに基づいてRISC設計を開発した。プロジェクトが成熟するにつれて、1980年代中盤から後半、1990年代初頭にかけて、ARM、PA-RISC、Alphaなど、多くの類似した設計が開発され、 Unixワークステーションやレーザープリンタ、ルータなどの組み込みプロセッサの商用利用価値を高める中央処理装置が誕生した。RISCプロセッサは、富岳などのスーパーコンピュータで使用されている。[ 3 ]
RISCプロセッサ設計の種類には、 ARCプロセッサ、DEC Alpha、AMD Am29000、ARMアーキテクチャ、Atmel AVR、Blackfin、Intel i860、Intel i960、LoongArch、Motorola 88000、MIPSアーキテクチャ、PA-RISC、Power ISA、RISC-V、SuperH、およびSPARCが含まれます。
1960年代に遡る多くのシステムが、ロードストア方式を採用していたことから、最初のRISCアーキテクチャとして評価されている。[ 4 ] RISCという用語は、バークレーRISCプロジェクトのデビッド・パターソンによって造語されたが、それ以前にも似たような概念は存在していた。[ 5 ]
1964年にシーモア・クレイが設計したCDC 6600は、ロードストアアーキテクチャを採用し、アドレス指定モードは2つ(レジスタ+レジスタ、レジスタ+即値定数)のみで、演算コードは74個、基本クロックサイクルはメモリアクセス時間の10倍高速でした。[ 6 ]ジャック・ドンガラは、CDC 6600の最適化されたロードストアアーキテクチャのおかげで、現代のRISCシステムの先駆けと見なすことができると述べていますが、現代のRISCシステムの開発には他にも多くの技術的な障壁を克服する必要がありました。[ 7 ]
マイケル・J・フリンは、最初のRISCシステムをIBM 801設計[ 2 ]と見なしている。これは1975年にジョン・コックによって開始され、1980年に完成した。801は、デジタル電話交換機の基盤として使用する24ビット高速プロセッサを構築しようとする取り組みから生まれた。1時間に100万件(1秒あたり300件)の通話を切り替えるという目標を達成するために、CPUには1秒あたり1200万命令(MIPS)程度の性能が必要であると計算された[ 8 ] 。これは、当時最速のメインフレームマシンであった370/168の3.5 MIPSという性能と比較すると非常に高い[ 9 ] 。
この設計は、IBMが顧客から収集した膨大な統計データの調査に基づいていた。この調査により、高性能設定のコードがプロセッサレジスタを多用し、しばしばレジスタが不足することが明らかになった。これは、レジスタを追加することでパフォーマンスが向上することを示唆していた。さらに、コンパイラは一般的に利用可能な命令の大部分、特に直交アドレッシングモードを無視していることに気づいた。代わりに、コンパイラは任意の命令の最速バージョンを選択し、それを使用して小さなルーチンを構築していた。これは、結果のコードに影響を与えることなく、命令の大部分を削除できることを示唆していた。これら2つの結論は相乗効果を発揮した。命令を削除することで命令オペコードを短くすることができ、命令ワード内のビットを解放して、より多くのレジスタを選択するために使用できるようになる。[ 8 ]
電話交換機プログラムは1975年に中止されたが、その時点でチームは、同じ設計でほぼすべてのコードを実行する際に大幅なパフォーマンス向上を実現できることを実証していた。シミュレーションでは、メモリに直接アクセスするのではなくレジスタを使用するように調整されたコンパイラは、従来の設計よりも約3倍高速にコードを実行できることを示した。やや意外なことに、レジスタの使用が改善されたことにより、既存のマシンでも同じコードが約50%高速に実行された。実際には、PL/Iを少し簡略化した実験的なPL/8コンパイラは、既存のメインフレーム上で一貫してはるかに高速に実行されるコードを生成した。[ 8 ]
801の32ビット版は、最終的に1981年にIBM ROMPとしてシングルチップの形で製造されました。これは「Research OPD [Office Products Division] Micro Processor」の略です。 [ 10 ]このCPUは「ミニ」タスク用に設計され、後のIBMコンピュータの周辺インターフェースやチャネルコントローラで使用されました。また、1986年にIBM RT PCのCPUとしても使用されましたが、商業的には失敗に終わりました。[ 11 ] 801は元の形では広く使用されませんでしたが、IBMの研究プロジェクトに刺激を与え、IBMの研究プロジェクトは最終的にIBM POWERアーキテクチャにつながりました。[ 12 ] [ 13 ]
1970年代後半までに、801は業界で広く知られるようになった。これは、より複雑なチップを市場に投入できるようになった新しい製造技術と時期を同じくしていた。1976年のZilog Z80は8,000個のトランジスタを搭載していたのに対し、1979年のMotorola 68000(68k)は68,000個のトランジスタを搭載していた。これらの新しい設計は、一般的に新たに得た複雑さを利用して命令セットを拡張し、より直交性を高めた。68kのように、ほとんどのものはマイクロコードを使用してこれを行い、命令を読み込んで、より単純な内部命令のシーケンスとして再実装した。68kでは、トランジスタの1/3全体がこのマイクロコーディングに使用された。[ 14 ]
1979年、デビッド・パターソンはカリフォルニア大学バークレー校から休暇を与えられ、DECの西海岸チームがVAXマイクロコードを改善するのを手伝った。パターソンはコーディングプロセスの複雑さに驚き、維持不可能だと結論付けた。[ 15 ]彼は最初にマイクロコーディングを改善する方法についての論文を書いたが、後に考えを変え、マイクロコード自体が問題だと判断した。DARPA VLSIプログラムからの資金提供を受けて、パターソンはバークレーRISCプロジェクトを開始した。今日ではほとんど知られていないこのプログラムは、チップ設計、製造、さらにはコンピュータグラフィックスにおいて膨大な数の進歩をもたらした。バークレーチームは、 BSD Unixの派生版のさまざまなプログラムを検討した結果、IBMと同様に、ほとんどのプログラムが68kの多種多様な命令を使用していないことを発見した。[ 16 ]
パターソンの初期の研究は、従来の「多ければ多いほど良い」アプローチの重要な問題点を指摘しました。全体的なパフォーマンスに不可欠な命令でさえ、マイクロコードを通過することで遅延が発生していたのです。マイクロコードを削除すれば、プログラムはより高速に実行されます。マイクロコードは最終的に複雑な命令をステップに分割するものであったため、コンパイラが代わりにこれを行うことができない理由はありませんでした。これらの研究は、他の変更がなくても、トランジスタ数を 1/3減らしたチップでもより高速に実行できることを示唆しました。[ 16 ]オリジナルの RISC-I 論文では、次のように述べられています。[ 17 ]
この追加の解釈レベルを省略することで、チップサイズを縮小しながらパフォーマンスが向上するようです。[ 17 ]
また、特定のアーキテクチャのマイクロコード実装では、複雑な操作は、同じことを行う一連のより単純な操作よりも遅くなる傾向があることも判明した。これは、多くの設計が急いで行われ、すべての命令を最適化または調整する時間がほとんどなかったことによる影響が一部ある。最も頻繁に使用される命令のみが最適化され、それらの命令のシーケンスは、そのシーケンスと同等の操作を実行する調整の少ない命令よりも高速になる可能性がある。悪名高い例の1つは、VAXのINDEX命令である。[ 18 ]
バークレーの研究により、他にもいくつかの重要な点が明らかになった。その一つは、プログラムがサブルーチン呼び出しと戻りにかなりの時間を費やしており、これらの呼び出しを高速化することで全体的なパフォーマンスを向上させる可能性があるということだった。このことから、バークレーの設計ではレジスタウィンドウと呼ばれる手法が採用された。この手法は、多少の複雑さを伴うものの、サブルーチンのパフォーマンスを大幅に向上させることができる。[ 17 ]また、数学命令の大部分は単純な代入であり、加算や減算などの演算を実際に実行するのはそのうちの1/3に過ぎないことも判明した。しかし、これらの演算が行われる場合、処理速度が遅い傾向があった。このことから、チップの大部分が制御とマイクロコードに充てられていた以前の設計とは異なり、基盤となる算術データユニットに重点を置くことになった。[ 16 ]
その結果生まれたBerkeley RISCは、パイプライン処理とレジスタウィンドウの積極的な使用によってパフォーマンスを向上させることに基づいていた。[ 18 ] [ 17 ]従来のCPUでは、レジスタの数は少なく、プログラムはいつでも任意のレジスタを使用できます。レジスタウィンドウを備えたCPUでは、128などの膨大な数のレジスタがありますが、プログラムは一度に少数のレジスタ(例えば8つ)しか使用できません。プロシージャごとに8つのレジスタに制限するプログラムは、非常に高速なプロシージャ呼び出しを行うことができます。呼び出しは、そのプロシージャで使用される8つのレジスタのセットにウィンドウを8つ「下」に移動するだけで、戻り値はウィンドウを元の位置に戻します。[ 19 ]バークレーRISCプロジェクトは1982年にRISC-Iプロセッサをリリースした。RISC -Iはトランジスタ数がわずか44,420個(当時の新しいCISC設計の平均は約100,000個)で、命令数も32個しかなかったが、他のシングルチップ設計を完全に凌駕し、VAXよりも高い性能が推定された。 [ 17 ] 1983年には、40,760個のトランジスタと39個の命令を持つRISC-IIがリリースされ、RISC-Iの3倍以上の速度で動作した。[ 17 ]
RISCプロジェクトがシリコンバレーで知られるようになると、1981年にスタンフォード大学で同様のプロジェクトが始まった。このMIPSプロジェクトは、ジョン・L・ヘネシーの大学院の授業から発展し、1983年に動作するシステムを開発し、1984年には簡単なプログラムを実行できるようになった。[ 20 ] MIPSのアプローチは、積極的なクロックサイクルとパイプラインの使用を重視し、可能な限り「フル」で実行できるようにした。[ 20 ] MIPSシステムの後にMIPS-Xが登場し、1984年にヘネシーと彼の同僚は、この設計を商業的に生産するためにMIPS Computer Systemsを設立した。[ 20 ] [ 21 ]この事業は、 1985年にMIPSと呼ばれる新しいアーキテクチャとR2000マイクロプロセッサを生み出した。 [ 21 ]
RISCコンセプトの全体的な理念は1980年代後半には広く理解されるようになり、MIPS-Xの設計者たちは1987年にそれを次のように表現した。
命令フォーマットの目標は、1. 簡単なデコード、2. 簡単なデコード、3. 簡単なデコードであるべきです。CPU パフォーマンスを犠牲にしてコード密度を向上させようとする試みは、あらゆる機会に嘲笑されるべきです。[ 22 ]
RISCと従来のCISC方式との競争は、1980年代初頭に理論的な分析の対象となり、例えばプロセッサ性能の鉄則につながった。

2010年以来、カリフォルニア大学バークレー校では、研究目的および独自のISAの代替として、新しいオープン標準命令セットアーキテクチャ(ISA)であるBerkeley RISC-Vが開発されてきました。2014年現在、ユーザー空間ISAのバージョン2が確定しています。[ 23 ]このISAは、小型組み込みプロセッサに十分なベアボーンコアから、標準およびチップ設計者定義の拡張機能とコプロセッサを使用してスーパーコンピュータやクラウドコンピューティング用途まで拡張できるように設計されています。シリコン設計ではROCKET SoCでテストされており、これはCHISEL言語のオープンソースプロセッサジェネレータとしても利用可能です。
1980年代初頭、RISCの概念には大きな不確実性がつきまとっていた。懸念事項の一つはメモリの使用であった。Motorola 68kのような従来のプロセッサからの単一の命令は、より単純なRISC命令の約6つに書き込まれる可能性がある。理論的には、メモリから命令をフェッチするのに時間がかかるため、システムが遅くなる可能性がある。しかし、1980年代半ばまでには、その概念は商業的に実現可能と見なされるほど成熟していた。[ 11 ] [ 20 ]
ミニコンピュータ市場では、Celerity Computing、Pyramid Technology、Ridge Computersなどの企業が1980年代初頭にRISCまたはRISCライクな原理に基づいて設計されたシステムを提供し始めた。[ 24 ] [ 25 ][26][27] [ 28 ]これらの設計のほとんどはRISCマイクロプロセッサを使用して開始されたものではない。

商用RISC設計は1980年代半ばに登場し始めた。IBM RT PCは1986年1月に発表され、Acorn ARM1は1985年4月の初期製造に続き、1986年7月に評価システムの一部として発表された[ 29 ] [ 30 ]。MIPS R2000は1986年5月に発表され[ 31 ] 、その後まもなくヒューレット・パッカードのPA-RISCが同社のコンピュータの一部に搭載された[ 32 ] 。その間、バークレーの取り組みは非常に有名になり、最終的にはそのコンセプト全体の名称となった。1987年、サン・マイクロシステムズはバークレーRISC-IIシステムを直接ベースとしたSPARCプロセッサを搭載したシステムの出荷を開始した。 [ 11 ] [ 33 ]米国政府のコンピューティングおよび通信のイノベーションに関する委員会は、RISC コンセプトの実現可能性が受け入れられたのは SPARC システムの成功によるものだと考えている。[ 11 ]
RISCが業界にもたらした利点は、唯一の供給元であったIntel 80386よりもはるかに低価格であったことである。[ 34 ] 1989年までに多くのRISC CPUが利用可能になり、競争により大量生産で1 MIPSあたり10ドルまで価格が下がった。IBMのRISC CPU(RT PCでのみ利用可能)の性能は他のものより競争力が低かったが、[ 35 ] SPARCの成功によりIBMの関心が再び高まり、1990年までに新しいRISCシステムがリリースされ、1995年までにRISCプロセッサは150億ドルのサーバー産業の基盤となった。[ 11 ]
パターソンは1980年代にインテルのコンサルタントを務めた。CISC 80386とその後継機でマイクロプロセッサ市場を席巻していたにもかかわらず、RISCが業界の未来であるという共通認識が同社のエンジニアに影響を与え、彼らはプロセッサの性能をRISCに匹敵するように向上させるべく努力した。[ 34 ] IBMはIBMメインフレームで可能な限りCISCを向上させるという同様のアプローチを選択し、[ 36 ]同時に既存のCISCミッドレンジシステムと直接競合する新しいRISCベースのコンピュータを導入した。[ 37 ]サンがSPARCに移行したのは、CISCの改良に頼るのではなく、できるだけ早くRISCに移行するという決定に基づいていた。[ 36 ] DECのエンジニアは、自社のVAXではなくMIPS R2000でDECstationを設計したが、その理由は、コストに対して「少なくとも2対1の性能上の優位性」があったからだと記している。[ 38 ] [ 36 ] 1980年代後半には、新しいRISC設計はCISC設計をはるかに凌駕する性能を発揮するようになった。[ 36 ]
1992年までに、Sun、DEC、HP、IBMが主要な商用RISC企業となった。[ 39 ]他のベンダーも独自のRISC開発に着手した。利用可能なアーキテクチャには、DEC Alpha、AMD Am29000、Intel i860およびi960、Motorola 88000、IBM POWER、そして少し遅れてIBM/Apple/Motorola PowerPCなどがあった。これらの多くは、同時代の他のものと比べて競争上の優位性がないことが多いため、その後姿を消した。残っているものは、ニッチ市場または他のシステムの一部としてのみ使用されることが多い。これらの伝統的なベンダーの設計のうち、SPARCとPowerPC由来のPower ISAだけが、依然として重要な市場を持っている。
ARMアーキテクチャは最も広く採用されたRISC ISAであり、当初はAcorn Archimedesのような限られた熱パッケージで低コストで高性能なデスクトップコンピューティングを実現することを目的としていましたが、スーパーコンピュータリーグの表に登場しながら、その初期の比較的低消費電力で冷却の低い実装はすぐにレーザープリンタのラスター画像処理などの組み込みアプリケーションに採用されました。[ 40 ] AcornはApple Inc.およびVLSIと提携し、1990年にARM Ltd.を設立し、研究開発費を共有し、ISAの新しい市場を開拓しました。ARMはTI、GEC、Sharp、Nokia、Oracle、Digitalと提携し、低消費電力の組み込みRISC設計を開発し、当時ニッチだった市場セグメントをターゲットにしました。モバイル、自動車、ストリーミング、スマートデバイスコンピューティングの台頭により、ARMは最も広く使用されるISAとなり、同社はこれまでに出荷されたすべてのCPUのほぼ半分がARMであると推定しています。[ 41 ]
RISCという用語の定義をめぐる混乱は、その用語の定式化に起因しており、比較的少ない命令(または命令群)を持つプロセッサアーキテクチャを便宜的にRISCアーキテクチャに分類する傾向も相まって、RISCを設計思想として定義しようとする試みがなされた。その試みの一つは、次のように表現されている。
RISCプロセッサは、パイプライン処理による効率的な実行と、最適化コンパイラによるコード生成のために設計された命令セットを備えている。
—マイケル・スレーター、マイクロプロセッサ・レポート[ 42 ]
「縮小命令セットコンピュータ」という表現についてよくある誤解は、命令が単純に削除され、結果として命令セットが小さくなるというものです。[ 43 ] 実際には、RISC の命令セットは長年にわたって拡大しており、今日では多くの RISC の命令セットは、多くの CISC CPU よりも大きな命令セットを持っています。[ 44 ] [ 45 ]例えば、PowerPC のような一部の RISC プロセッサは、CISC IBM System/370と同じくらい大きな命令セットを持っています。逆に、DEC PDP-8 (多くの命令が複数のメモリ アクセスを伴うため、明らかに CISC CPU です) は、8 つの基本命令と少数の拡張命令しか持っていません。[ 46 ] この表現の「縮小」という用語は、単一の命令が実行する作業量が、最大でも 1 つのデータ メモリ サイクルにまで削減されているという事実を説明するために意図されたものです。これは、単一の命令を実行するために数十のデータ メモリ サイクルを必要とする可能性のある CISC CPU の「複雑な命令」と比較したものです。[ 47 ]
ロード・ストアアーキテクチャという用語が好まれる場合もある。
RISC/CISC 論争を別の角度から見ると、コンパイラに何が公開されているかという点が重要になります。CISC プロセッサでは、ハードウェアは内部的にレジスタやフラグビットを使用して、 のような単一の複雑な命令を実装しますSTRING MOVEが、それらの詳細はコンパイラから隠蔽されます。RISC プロセッサの内部動作は「コンパイラに公開されている」ため、「Relegate Interesting Stuff to the Compiler」(興味深いものはコンパイラに委ねる)という頭字語が生まれます。 [ 48 ] [ 49 ]
ほとんどのRISCアーキテクチャは固定長命令とシンプルなエンコーディングを採用しており、フェッチ、デコード、発行ロジックを大幅に簡素化しています。これはRISCアプローチの主な目標の一つです。[ 17 ]
この一部は、現代の32ビット形式への移行によってのみ可能になっています。たとえば、一般的なプログラムでは、すべての数値定数の30%以上が0または1であり、95%が1バイトに収まり、99%が16ビット値に収まります。[ 50 ]コンピュータが8ビットまたは16ビットワードに基づいていたときは、インクリメントやデクリメントなどの特定の命令は別のオペコードを使用することで暗黙的にこれを行っていましたが、即値とオペコードを1つのメモリワードに組み合わせることは困難でした。対照的に、32ビットマシンは即値をエンコードするのに十分なスペースがあり、そうすることで値を取得するために2回目のメモリ読み出しを行う必要がなくなります。これが、多くのRISCプロセッサが12ビットまたは13ビット定数を命令ワードに直接エンコードできるようにしている理由です。[ 17 ]
MIPSおよびRISC設計の場合と同様に、13ビットの定数領域を想定すると、命令エンコーディング用にさらに19ビットが使用可能です。これにより、オペコードと1つまたは2つのレジスタを示すのに十分なスペースが確保されます。レジスタ間演算(主に算術演算と論理演算)では、使用される2つまたは3つのレジスタをエンコードするのに十分なビット数が必要です。ほとんどのプロセッサは3オペランド形式を使用するA = B + Cため、3つのレジスタ番号が必要です。プロセッサに32個のレジスタがある場合、各レジスタには5ビットの番号が必要で、合計15ビットになります。これらのレジスタの1つを即値に置き換えても、残りの2つのレジスタとオペコードをエンコードするスペースがまだあります。命令を実行する前に読み込む必要があるワード数を減らす、INCやなどのマルチワードシステムでよく見られる命令DECは、RISCでは単一のレジスタと即値1で実行できるため不要です。[ 17 ]
オリジナルの RISC-I フォーマットは、この概念の典型的な例です。オペコードに 7 ビット、条件コードに 1 ビットのフラグ、次の 5 ビットを宛先レジスタ、次の 5 ビットを最初のオペランドに使用します。残りは 14 ビットで、最初のビットは、次の 13 ビットに即値が含まれているか、または 5 ビットのみを使用して 2 番目のオペランドのレジスタを示すかを示します。[ 17 ]より複雑な例として、MIPS エンコーディングがあります。これは、オペコードに 6 ビットのみを使用し、その後に 2 つの 5 ビット レジスタを使用します。残りの 16 ビットは 2 つの方法で使用できます。1 つは 16 ビットの即値として、または 5 ビットのシフト値 (シフト操作でのみ使用され、それ以外の場合はゼロ) として、残りの 6 ビットをオペコードの拡張として使用します。レジスタ間算術演算の場合、オペコードは 0 で、最後の 6 ビットに実際のコードが含まれます。即値を使用する演算では、先頭の通常のオペコード フィールドを使用します。[ 51 ]
32ビット命令の欠点の1つはコード密度の低下であり、これはRISCアーキテクチャが元々対象としていたワークステーションやサーバー市場よりも組み込みコンピューティングにおいてより深刻な問題となります。この問題に対処するため、SuperH (1992)、ARM thumb (1994)、[ 52 ] MIPS16e (2004)、Power Variable Length Encoding ISA (2006)、RISC-V、Adapteva Epiphanyなどのいくつかのアーキテクチャでは、オプションで機能を削減した短い圧縮命令セットが用意されています。一般的に、これらの命令はレジスタの数が少なく、即値用のビット数も少なく、多くの場合、2オペランド形式を使用して命令から1つのレジスタ番号を削除します。16個のレジスタを持つシステムで2オペランド形式を使用する場合、レジスタ番号に8ビットが必要となり、残りの8ビットはオペコードやその他の用途に使用できます。SH5もこのパターンに従っていますが、元の16ビットエンコーディングに長い32ビット命令を追加するという逆の方向に進化しています。
RISCの最も特徴的な側面は、 1サイクルあたり少なくとも1つの命令を実行することである。[ 35 ]シングルサイクル操作は、「コンピュータの命令ストリームを支配する単純な関数の高速実行」と説明されており、これにより、任意の単一命令ストリームに対して1サイクルあたり1命令に近い平均スループットを実現しようとしている。[ 53 ]
RISCアーキテクチャのその他の特徴は以下のとおりです。
RISC設計では、命令ストリームとデータストリームが概念的に分離されているハーバードメモリモデルを採用していることが多い。これは、コードが格納されているメモリを変更しても、プロセッサが実行する命令には影響しない可能性があることを意味する(CPUは命令キャッシュとデータキャッシュを別々に持っているため)。少なくとも、特別な同期命令が発行されるまでは影響がない。命令キャッシュとデータキャッシュを別々に持つCISCプロセッサは、古いプロセッサとの下位互換性のために、通常、それらを自動的に同期させる。
初期のRISC設計の多くは、ジャンプ命令または分岐命令の直後に続く命令領域である分岐遅延スロットを持つという特徴を共有していました。この領域内の命令は、分岐が実行されたかどうかに関わらず実行されます(つまり、分岐の効果は遅延されます)。この命令により、通常分岐を実行するために必要な余分な時間、CPUのALUが稼働し続けます。今日では、分岐遅延スロットは一部のRISC設計を実装するための特定の戦略の望ましくない副作用とみなされており、最新のRISC設計(PowerPCやSPARCおよびMIPSの最新バージョンなど)では一般的に廃止されています。
1975年頃の最初のRISCラベル付き設計に起因するいくつかの側面としては、当時のメモリ制限のあるコンパイラでは手動アセンブリコーディングを容易にするための機能を活用できないこと、また、複雑なアドレッシングモードは追加のメモリアクセスが必要なため多くのサイクルを要することが挙げられます。このような機能は、より単純な命令のシーケンスで実行した方が、多くのレジスタのためのスペースを確保できるほど実装が小さくなり、低速なメモリアクセスの回数を減らせるという主張がなされました。これらの単純な設計では、ほとんどの命令は均一な長さと類似した構造を持ち、算術演算はCPUレジスタに限定され、メモリへのアクセスはロード命令とストア命令のみに限定されています。これらの特性により、以前よりもパイプラインステージのバランスが取れ、RISCパイプラインは大幅に効率化され、より高いクロック周波数が可能になりました。
RISCをはじめとする様々な設計のもう一つの原動力は、実際のプログラムにおける実用的な測定結果から得られたものでした。アンドリュー・タネンバウムはこれらの多くをまとめ、プロセッサの即値命令がしばしば過剰に大きいことを示しました。例えば、プログラム内の定数の98%は13ビットに収まるにもかかわらず、多くのCPU設計では定数を格納するために16ビットまたは32ビットが割り当てられていることを示しました。これは、メモリへのアクセス回数を減らすために、固定長のマシンでは定数を命令語の未使用ビットに格納し、CPUが必要としたときにすぐに使用できるようにできる(従来の設計における即値アドレッシングに似ている)ことを示唆しています。そのためには、32ビットの命令語に適切なサイズの定数を格納するスペースを確保するために、小さなオペコードが必要でした。
多くの実際のプログラムは、ほとんどの時間を単純な操作の実行に費やすため、一部の研究者は、それらの操作をできるだけ高速化することに注力することにした。CPUのクロックレートは、あらゆる命令の中で最も遅いサブ操作の実行にかかる時間によって制限される。そのサイクルタイムを短縮すると、多くの場合、他の命令の実行が高速化される。[ 54 ]「縮小命令」に焦点を当てた結果、結果として得られたマシンは「縮小命令セットコンピュータ」(RISC)と呼ばれるようになった。目標は、命令を非常に単純にしてパイプライン化を容易にし、高周波数で単一クロックのスループットを実現することであった。これは、「重要な算術演算とレジスタ転送」がパイプライン化が難しいと考えられていた CISC 設計とは対照的であった。[ 55 ]
後に、RISCプロセッサの最も重要な特徴の1つは、外部メモリへのアクセスがロード命令またはストア命令のみで可能であることであることが指摘されました。他のすべての命令は内部レジスタに限定されていました。これにより、プロセッサ設計の多くの側面が簡素化されました。命令を固定長にすることができ、パイプラインが簡素化され、メモリアクセス完了の遅延(キャッシュミスなど)を処理するロジックが2つの命令のみに分離されました。このことから、RISC設計はロードストアアーキテクチャと呼ばれるようになりました。[ 56 ]
一部のCPUは、非常に少ない命令セットを持つように特別に設計されていますが、これらの設計は従来のRISC設計とは大きく異なるため、最小命令セットコンピュータ(MISC)やトランスポートトリガーアーキテクチャ(TTA)などの別の名前が付けられています。
RISCアーキテクチャは、従来、デスクトップPCや汎用サーバー市場ではほとんど成功しておらず、x86ベースのプラットフォームが依然としてプロセッサアーキテクチャの主流となっています。しかし、ARMベースのプロセッサが高性能システム向けに開発されているため、状況は変わる可能性があります。[ 57 ] Cavium、AMD、Qualcommなどのメーカーは、ARMアーキテクチャに基づいたサーバープロセッサをリリースしています。[ 58 ] [ 59 ] ARMはさらに、 2017年にCrayと提携してARMベースのスーパーコンピュータを製造しました。[ 60 ]デスクトップでは、MicrosoftはQualcommとの提携の一環として、2017年にQualcomm SnapdragonベースのデバイスでWindows 10のPC版をサポートする予定であることを発表しました。これらのデバイスは、32ビットx86コードをARM64コードに変換するx86プロセッサエミュレータを介して、32ビットx86用にコンパイルされたWindowsアプリケーションをサポートします。[ 61 ] [ 62 ] Appleは、 MacデスクトップおよびラップトップコンピュータをIntelプロセッサから、Appleシリコンと呼ばれる自社開発のARM64ベースのSoCに移行すると発表した。Apple M1プロセッサを使用した最初のコンピュータは2020年11月にリリースされた。[ 63 ] Appleシリコンを搭載したMacは、x86-64からARM64へのトランスレータであるRosetta 2を使用してx86-64バイナリを実行できる。 [ 64 ]
しかし、デスクトップ分野以外では、ARM RISCアーキテクチャはスマートフォン、タブレット、および多くの組み込みデバイスで広く使用されています。初期のRISC設計は、現代のCISC設計とは大きく異なっていましたが、2000年までにRISCラインの最高性能CPUはCISCラインの最高性能CPUとほとんど区別がつかなくなりました。[ 65 ] [ 66 ] [ 67 ]
RISCアーキテクチャは現在、スマートフォンやタブレット端末から、 LineShine、El Capitan、Frontierといった世界最速のスーパーコンピュータまで、幅広いプラットフォームで使用されています。これらは、 2026年6月時点のTOP500リストで最速上位3位を占めています。 [ 68 ]
21世紀初頭までに、ローエンドおよびモバイルシステムの大部分はRISCアーキテクチャに依存していた。[ 69 ]例としては、以下が挙げられる。
RISCアーキテクチャは、実装が比較的容易であるため、オープンソースプロセッサやソフトマイクロプロセッサで人気が高まっており、例えばFPGA実装やプロトタイピングに適しています。例としては、以下のようなものがあります。
2022年、スティーブ・ファーバー、ジョン・L・ヘネシー、デビッド・A・パターソン、ソフィー・M・ウィルソンは、RISC(Reduced Instruction Set Computer)チップの発明、開発、実装への貢献により、米国工学アカデミーからチャールズ・スターク・ドレイパー賞を授与された。[ 78 ] [ 79 ]
[...]最初のシリコンは1985年4月26日に稼働した。
主な目標は命令数を減らすことではなく、複雑さを減らすことだった。
とCISCの境界線は年々曖昧になってきている。
Appleは、MacコンピュータのプロセッサをIntel製から自社製のARMベースのAシリーズチップに切り替えることを正式に発表した。
CISC vs RISC (あるいはRISCとは実際何なのか) の再投稿(N回目)