RISC
[Wikipedia|▼Menu]
.mw-parser-output .hatnote{margin:0.5em 0;padding:3px 2em;background-color:transparent;border-bottom:1px solid #a2a9b1;font-size:90%}

この項目では、計算機科学におけるコンピュータのアーキテクチャ設計に関する用法について説明しています。分子生物学におけるRISC(RNA-induced silencing complex)については「RNA誘導サイレンシング複合体」をご覧ください。
.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%;font-size:90%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}html.client-js body.skin-minerva .mw-parser-output .mbox-text-span{margin-left:23px!important}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}

この記事は検証可能参考文献や出典が全く示されていないか、不十分です。出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方
出典検索?: "RISC" ? ニュース ・ 書籍 ・ スカラー ・ CiNii ・ J-STAGE ・ NDL ・ dlib.jp ・ ジャパンサーチ ・ TWL(2011年12月)

RISC(reduced instruction set computer、リスク)は、コンピュータプロセッサ命令セットアーキテクチャ (ISA) の設計の方向性として、命令セットの複雑さを減らすことすなわち、命令の総数や種類を減らし、それぞれの命令が行う処理を単純なものにし、命令フォーマットの種類を減らし、オペランドのアドレッシングを単純化する、などといった方向性により「命令セットを縮小して」設計されたコンピュータ(プロセッサ)である。この方向性が新しいものとして提案された際、従来のその逆の方向性を指すレトロニムとしてCISCという語が同時に提案された。
概要

この着想のひとつは、従来のプロセッサに備わっていた様々な命令の大部分が、実際のプログラムを書く際にはほとんど使われていないことが見出されたことにある。これは特に IBM 801 の開発に関して言われている。従来のプロセッサでは、複数の処理を一挙にこなす複雑な命令[注 1]をもち、また、個々の演算命令につき、任意のアドレッシングモードを組み合わせることが可能(直交性がある)である。だが実際に作成されたプログラムを解析すると、使用される命令はそのうちのごくわずかなものに限られることが判った。この調査結果に基づいて命令セットを簡潔にすることが試みられた。

先行例としての(1970年代の)IBM 801 に続いて、RISCの提案は、1980年代のジョン・ヘネシーデイビッド・パターソンによる[1]。この論文"RISC I:A Reduced Instruction Set VLSI Computer"では、調査対象とした従来型の命令セットを持つプロセッサをCISCと呼び、その対比として提案した命令セットを持つプロセッサをRISCと呼んだ[2]。特に、801 は「チップに集積されたコンピュータ」ではなく、一方、ヘネシーとパターソンの提案は Mead & Conway revolution(en:Mead & Conway revolution)と呼ばれている当時のVLSI開発の機運という背景もあって、マイクロプロセッサとしての実装が前提となっている。
特徴

RISCアーキテクチャの特徴として以下の要素が言及される。
固定命令語長
[3]
命令の解読に際して可変長命令では命令長の判別と切り出し等に時間がかかっていた欠点を排除し、命令デコードに要する時間を短縮すると共に、命令の先読みをしてパイプラインの効率を上げる。
全ての演算は1クロックで実行する。
パイプライン動作にウエイトを生じさせない。初期のアーキテクチャでは処理に複数クロックを要する乗除算命令を省略し、乗除算の必要には複数の命令を組み合わせて実現した。
演算はレジスタ‐レジスタ間演算のみ[3]
回路構成の単純化を図るとともに、メモリ・アクセスのレイテンシがパイプライン動作に悪影響を与えるのを避ける。メモリに影響する命令はロード・ストア命令のみであり、通常メモリ上のデータへの明示的な演算は行われない。
ワイヤードロジックで構成する
マイクロコードによる命令実行(マイクロプログラム方式)を排し、命令実行に要するクロックサイクル数を削減するとともに、命令解析・実行を行う回路をゲートの組み合わせで実装し、高クロック動作を可能にする。
多数のレジスタを備える。
演算の途中結果をCPU内に蓄えられる様にして、メモリへのアクセスを減らし、メモリ・アクセスによるレイテンシで動作が遅延するのを避ける。
遅延実行スロットを備える
パイプラインハザードを避け、パイプラインの処理効率を上げる。

などが挙げられるが、例外も多い。

CISCではハードウエアでサポートされているスタック操作命令がRISCにはなく、スタック操作[注 2]などの処理は単純な命令を組み合わせて代替処理を行う。命令の組み合わせによって発生し得るパイプラインハザードはコンパイラでコード生成時に検出し、命令の順序を最適化することで回避する。排他制御などで不可欠なアトミック命令はRISCでもサポートされる。

命令語長を固定長にすることでパイプライン処理の処理効率を向上させることができるが、プログラムをコンパイルする際にパイプライン動作を前提とした最適化を行う必要があり、コンパイラ作成には高度な技術が要求される。
歴史
RISC設計思想

1970年代後半、IBMなどの研究で、実際に使用されているプログラムを解析したところ、複数の処理を一気に行う高機能な命令や、いわゆる直交性のある、命令とアドレッシングモードの組み合わせの大部分は実際のプログラムでは使われていないことが判明した。これは、プログラミング技法が、従来のバイナリコードを意識したアセンブリ言語の記述による低レベルのプログラミング形態から、高級言語で記述してコンパイラを使ってバイナリコードを得る形態に移り変わったことの副産物である。それまでに設計されたCPUの命令セットには、当初アセンブリ言語でプログラムを記述するうえで便利な命令が含まれ、やがてコンパイラでコード生成を行う前提で、高級言語の制御構文をそのまま実行できるように、複雑な機械語の命令も実装される様になった。だが、当時のコンパイラはCPUが持つ利点をあまり生かせていなかった。というのもコンパイラの開発は非常に高度な技術を要し、困難を伴うことだったからである。市場にはそれでもコンパイラが浸透していき、直交性の利点や、複雑な命令の利点は薄められていった。

もうひとつの発見は、複雑な処理を行う命令の所要時間と、単純な命令を組み合わせて同等の処理を行わせる場合の所要時間を比較したとき、しばしば前者が遅いということである。このパラドックスは、CPUの設計に許容される期間の制限から生じた。設計者は十分な時間を与えられず、全ての命令の処理を最適化することができずに、結果としてよく使われる命令の処理時間だけを最適化したのである。有名な例としてVAXのINDEX命令がある。この命令はループを使った同等機能のプログラムコードよりも遅かった。

一方で、メモリの速度よりもCPUの速度の向上が著しくなってきていた。1970年後半の時点でも、以後、CPUの演算速度が向上し続けるのに対してメモリアクセスの速度の向上は限定的であり、以後も速度差が拡大することが明らかだった。すなわち、今後10年の間にCPUの演算速度は相対的にメモリアクセスの10倍、100倍となってゆくのである。こうしてより高速化していくCPUの演算速度を維持するためにはアクセスまでの時間が短いレジスタを増やさなければならず、また、高速化するCPUと速度の上がらないメモリシステムの速度差を埋めるためにキャッシュを拡充しなければならないことは明らかだった。これら多数のレジスタやキャッシュを実装するための面積をシリコン上に確保する必要が生じた。これについてはCPUのアーキテクチャを単純にしてその面積を削減することで、レジスタやキャッシュの為の面積を確保できた。

さらにRISCアーキテクチャの別の優位性が、実際に使われているプログラムの解析結果からも明らかになった。アンドリュー・タネンバウムは様々なプログラムを集めて計測結果をまとめ、多くのプロセッサの備える仕様は、実際のプログラムで要求されるものより過剰であることを立証した。例えば、プログラム内の定数値のうち98%が13ビットに収まることを示したが、一方で既存のCPUのほとんどは定数値を格納するエリアのサイズとして8ビットの倍数にあたるサイズを用意していた。典型的には8ビット、16ビット、32ビットである。これが意味するのは、命令のビット・フィールド構成を適切に設計することで、命令に使用する定数を命令のオペランド・フィールドに格納し、メモリアクセスを減らすことができるということである。定数をメモリやレジスタから取ってくるのではなく、当該命令の中に格納することで速度を向上させることができる。一方で、これを実現するためには命令を表現するビット・フィールド幅を小さくする必要がある。さもなければ命令の中にそれなりのサイズの定数を埋め込むことができないからである。

これらの要素を背景に、アドレッシングモードと命令数を削減する、縮小命令セット (Reduced Instruction Set) という用語が生まれた。従来のアーキテクチャとRISCの本質的な違いは、全ての演算をレジスタ間で行い、メモリへの読み書きをレジスタとメモリの間の転送命令に限る点である。このためRISCはロード/ストア・アーキテクチャとも呼ばれる。


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:62 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef