(Translated by https://www.hiragana.jp/)
RISC - Wikipedia コンテンツにスキップ

RISC

出典しゅってん: フリー百科ひゃっか事典じてん『ウィキペディア(Wikipedia)』

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はロード/ストア・アーキテクチャともばれる。RISCアーキテクチャの概念がいねん対比たいひして、従来じゅうらい設計せっけい手法しゅほうComplex Instruction Set Computer (CISC) としてられるようになった。ただし、これはあくまでもRISCと対立たいりつする概念がいねんとしてとらえるときに使つか用語ようごである。また、RISCアーキテクチャとわれるCPUであっても、機種きしゅによっては巨大きょだい命令めいれいセットをつこともある。

RISCの設計せっけい思想しそう命令めいれいセットを縮小しゅくしょうすることにある。この副作用ふくさようとして、命令めいれい識別しきべつするのに必要ひつようなビットフィールドはばちいさくできるため、命令めいれいないにオペランドデータを直接ちょくせつふくませる余地よちしょうじ、レジスタやメモリを使つかわずに場面ばめんおおくなった。同時どうじにメモリへのインタフェースが単純たんじゅんされ(メモリにアクセスするタイミングが単純たんじゅんされ)、最適さいてきできるようになった。

しかし、RISCにも欠点けってんがあった。単純たんじゅん命令めいれいわせてプログラムをくため、複雑ふくざつ命令めいれいつCISCにくらべておな処理しょり実現じつげんする場合ばあい必要ひつよう命令めいれいすうえた。くわえて初期しょきのRISCは命令めいれいちょうが32ビットはばであり、プログラムサイズがおおきくなり、コード密度みつどひくくなると指摘してきされた[4]当時とうじ利点りてん欠点けってんのどちらが性能せいのうにインパクトがあるかは議論ぎろんまととなった。

RISC以前いぜん設計せっけい思想しそう

[編集へんしゅう]

初期しょきのプログラミング環境かんきょうでは、コンパイラ存在そんざいしなかった。プログラミングは機械きかいかアセンブリ言語げんごおこなわれた。プログラミングをより簡単かんたんにするため、コンピュータの設計せっけいしゃはどんどん複雑ふくざつ処理しょりおこな命令めいれい追加ついかしていった。それはつまり、現在げんざいならば高度こうどプログラミング言語げんご関数かんすう(サブルーチン)レベルで実現じつげんされるべきものだった。当時とうじ風潮ふうちょうとしてコンパイラの設計せっけいよりもハードウェアの設計せっけいのほうが簡単かんたんであるというかんがえがあり、結果けっかとして複雑ふくざつなことはハードウェアにになわせることとなった。

高度こうど命令めいれい追加ついか必要ひつようとするべつ要因よういんとしてメモリ空間くうかんつよ制約せいやくがあったことがげられる。メモリは非常ひじょう高価こうかで、システムに用意よういできるメモリ空間くうかんかぎられていたので、プログラム容量ようりょう縮小しゅくしょうすることがつよ要請ようせいされた。たとえば、当時とうじのシステムにはすうキロバイトしかメモリが搭載とうさいされていなかった。そのため、業界ぎょうかい高度こうど複雑ふくざつ命令めいれい必要ひつようとしていたし、命令めいれい可変長かへんちょうになっていて、ひとつの命令めいれいでいくつものことをこなし、また、ひとつの命令めいれいでデータの転送てんそう演算えんざん同時どうじっていた。当時とうじ命令めいれいデコード単純たんじゅんするよりも命令めいれいにいろいろな機能きのうむことが優先ゆうせんされた。

また、当時とうじ主流しゅりゅうであった磁気じきコアメモリのアクセス速度そくどおそかった。そのため、情報じょうほう密度みつどたかめアクセスする回数かいすうらすことで、アクセス速度そくど問題もんだい軽減けいげんできる。

CPUないのレジスタ本数ほんすうすくなかったのは以下いかのような理由りゆうからである。

  • レジスタの記憶きおくセルは外部がいぶのメモリの記憶きおくセルよりさらに高価こうかだった。当時とうじ集積しゅうせき回路かいろのレベルでは、おおきなレジスタセットはチップやボードのエリアの無駄遣むだづかいとしかおもわれなかった。
  • レジスタすうやすと、命令めいれいコードないでレジスタを指定していするためのビットフィールドが増大ぞうだいし、結果けっかとして命令めいれいのサイズがおおきくなって、貴重きちょうなメモリを浪費ろうひすることになる。

以上いじょうのような理由りゆうから、CPU設計せっけいしゃ可能かのうかぎひとつの命令めいれいおおくの機能きのうんだ。これにより、たとえば、ひとつの命令めいれいでメモリからふたつの数値すうちをロードして加算かさん結果けっか直接ちょくせつメモリに格納かくのうする、ふたつの数値すうちをロードして演算えんざん結果けっかはレジスタに格納かくのうする、ひとつの数値すうちをメモリからロードしてもうひとつはレジスタにあるものを使つか演算えんざん結果けっかをメモリに格納かくのうする、などの命令めいれい実装じっそうされている。

当時とうじ目標もくひょう実装じっそうされているすべての演算えんざん命令めいれいすべてのアドレッシングモードを使つかえるようにすることであった。これを直交ちょっこうせいしょうした。これはCPUを複雑ふくざつにしたが、処理しょり個別こべつ最適さいてきすることができるようになったともえる。つまり、単純たんじゅん命令めいれいのみを使つかえば高速こうそく動作どうさするようにである。このよう設計せっけい思想しそうはRISCの概念がいねんひろまったのちに、対比たいひしてCISCばれるようになった。

CISCてき設計せっけい極致きょくちとしてふたつの実例じつれいがある。ひとつは6502で、もうひとつはVAXである。25USドルの6502はひとつしかレジスタをたないが、メモリインタフェースが最適さいてきされているため、高速こうそく動作どうさできる(4MHzのザイログのZ80同様どうよう)。VAXはミニコンピュータであり、ひとつのCPUにつき3筐体きょうたい(ラック)を必要ひつようとする。特筆とくひつすべきはそのアドレッシングモードの豊富ほうふさで、すべての演算えんざん命令めいれいすべてのアドレッシングモードをわせることができた。

CPUの性能せいのう向上こうじょうのためのほか方法ほうほう

[編集へんしゅう]

一方いっぽうで、CPUの性能せいのう向上こうじょうする技術ぎじゅつ導入どうにゅうされていった。

1980年代ねんだい初頭しょとう既存きそん設計せっけい技法ぎほう限界げんかいているとかんがえられていた。将来しょうらい性能せいのう向上こうじょう半導体はんどうたいプロセスの進歩しんぽ依存いぞんするしかないが、それが限界げんかいたっするということはつまりチップじょう機能きのう削減さくげんするということである。チップの複雑ふくざつせいはそのままであるが、チップの面積めんせき縮小しゅくしょうすることで動作どうさ周波数しゅうはすうげることができる。通信つうしんリンクをんだ並列へいれつコンピューティング研究けんきゅうすくなからぬ投資とうしおこなわれた。高速こうそくなチップをつくわりにたくさんのチップをならべ、処理しょりすべき問題もんだい分割ぶんかつしてかくチップにてるのである。

しかし、当初とうしょおそれは杞憂きゆうであった。1980年代ねんだい後半こうはんにはCPUの性能せいのう向上こうじょうさせるいくつかの技術ぎじゅつ導入どうにゅうされた。ひとつは、1960年代ねんだいよりメインフレームようなど高価こうかなCISCのCPUで採用さいようされていた技術ぎじゅつであるが、命令めいれい処理しょり複数ふくすうのステップに分割ぶんかつする命令めいれいパイプラインや、その効果こうかたかめる分岐ぶんき予測よそくなどである。これにより、複数ふくすう命令めいれいのそれぞれべつ処理しょりステージを同時どうじ実行じっこうすることで命令めいれい並列へいれつ実行じっこう実現じつげんするのである。一般いっぱんてきなプロセッサは、命令めいれいみ、デコード(解釈かいしゃく)し、必要ひつようならばデータをメモリからってきて、実際じっさい処理しょり実行じっこうし、結果けっか指定していされた場所ばしょ格納かくのうする。パイプラインという手法しゅほうまれたのは、命令めいれいんだら、その命令めいれい処理しょり完了かんりょうたずにつぎ命令めいれいむことができるという洞察どうさつからであった。そうすると、後続こうぞく命令めいれいんでいる一方いっぽう先行せんこう命令めいれいをデコードすることが可能かのうとなり、そして、つぎのサイクルでは実行じっこう、デコード、命令めいれいみのみっつとなり、実質じっしつてき複数ふくすう命令めいれい並行へいこうして処理しょりされていることになる。個々ここ命令めいれいると、処理しょり完了かんりょうまでにすうサイクルかかっていてけっして高速こうそくではない(レイテンシは短縮たんしゅくしない)が、つぎ命令めいれいとの関係かんけいれば順次じゅんじ命令めいれい実行じっこうされ、1サイクルごと命令めいれい実行じっこう終了しゅうりょうしていくことになる(スループットはたかい)。これにより高速こうそくなシステムができ、プロセッサない資源しげん効率こうりつてき利用りようされる。

もうひとつの解決かいけつほう処理しょりユニットをプロセッサない複数ふくすう装備そうびし、複数ふくすう演算えんざん同時どうじおこなスーパースケーラプロセッサの概念がいねんである。連続れんぞくしてんだ複数ふくすう命令めいれいを、複数ふくすう処理しょりユニットに同時どうじ投入とうにゅうして並列へいれつ処理しょりおこなう。ただし、ある命令めいれい実行じっこうするためにはまえ命令めいれい実行じっこう結果けっかもちいる(依存いぞんせいがある)場合ばあいがしばしばあり、つねにこの方法ほうほう性能せいのう向上こうじょうできるとはかぎらない。

パイプラインを導入どうにゅうしたりスーパースケーラする手法しゅほうは、単純たんじゅんなRISCアーキテクチャの設計せっけいに、調停ちょうてい機能きのう複数ふくすうのデータパス、パイプラインレジスタを追加ついかして性能せいのう向上こうじょうさせようというものである。CISCでは複雑ふくざつ命令めいれい実装じっそうして、これにより一挙いっきょ複数ふくすう処理しょりおこなうことで性能せいのうたかめようとするのと対照たいしょうてきである。チップの面積めんせき有限ゆうげんなので、性能せいのう向上こうじょうのための仕組しくみを追加ついかするためにはなにかをけずらなくてはならないが、基本きほんてきなRISCアーキテクチャのCPUは非常ひじょう単純たんじゅん面積めんせきちいさく、追加ついか機能きのう実装じっそうする面積めんせき確保かくほするうえで非常ひじょう好都合こうつごうだった。初期しょきのRISCの性能せいのうひくかったが、これらの設計せっけい手法しゅほうれることによって1980年代ねんだい後半こうはんにはCISCをおおきくはな性能せいのう達成たっせいした。半導体はんどうたいプロセスの進歩しんぽによってこれらの手法しゅほうをCISCに導入どうにゅうできるようになるには1990年代ねんだい初頭しょとうPentiumPentium Proまでたねばならなかった。

RISCチップはそのコアを実現じつげんするのに必要ひつようトランジスタかずすくなくてむため、以下いかのような様々さまざま機能きのう要求ようきゅうをチップにれることができた。

  • レジスタセットの容量ようりょう増加ぞうか
  • 内部ないぶ並列へいれつせい向上こうじょうさせるための調停ちょうてい機構きこう
  • 巨大きょだいキャッシュ追加ついか
  • マイクロコントローラけのI/Oやタイマの追加ついか
  • ベクタープロセッサ (SIMD命令めいれい) の追加ついか
  • なに付加ふかしないで、てい電力でんりょく小型こがた指向しこうする

RISCデザインで一般いっぱんてき特徴とくちょう以下いかとおりである。

  • 固定こてい命令めいれいちょう統一とういつされたビットフィールド設計せっけい
ビットフィードの構造こうぞう可能かのうかぎ統一とういつし、オペコード・オペランドがつねおなじビットに配置はいちされるようにして、命令めいれいデコードが高速こうそくおこなえるようにする
  • レジスタが基本きほんてきすべ同等どうとう汎用はんようである
コンパイラがレジスタに変数へんすうてをおこなうさいに制約せいやくがなく、コンパイラの実装じっそう容易よういになる。ただし、整数せいすうよう浮動ふどう小数点しょうすうてんすうようレジスタは基本きほんてき区別くべつされる
  • 単純たんじゅんなアドレッシングモード
オペランドとして指定していしたレジスタをポインタとしてメモリアクセスに使用しようしたり、レジスタにオフセットをくわえて実効じっこうアドレスをるモードをつ。それより複雑ふくざつなアドレッシングは、演算えんざん命令めいれいわせて実効じっこうアドレスを算出さんしゅつした結果けっかをレジスタにれて使用しようする。
  • ハードウェアがサポートするデータがたすくない
たとえば、CISCには文字もじれつやビットストリングをあつか命令めいれいそなえたり、多項式たこうしきとか複素数ふくそすうあつかうものもあった。そのような命令めいれいはRISCには見受みうけられない。なお、最新さいしんのアーキテクチャではSIMD命令めいれいけに、複数ふくすうをパックしたデータ形式けいしきもサポートする。

RISCはハーバード・アーキテクチャ実現じつげんしたものともわれる。概念的がいねんてき命令めいれいコードのフローとデータのフローが分離ぶんりされているからである[ちゅう 3]。これによって、命令めいれいキャッシュとデータキャッシュへ同時どうじにアクセスすることができ、性能せいのう向上こうじょう寄与きよする。

初期しょきのRISCの設計せっけいには分岐ぶんき遅延ちえんスロット仕組しくみもそなえられていた。これは分岐ぶんき命令めいれい条件じょうけん分岐ぶんき直後ちょくご命令めいれいし、条件じょうけん分岐ぶんき条件じょうけん成立せいりつ分岐ぶんきするしないにかかわらず、かなら実行じっこうされる(ぎゃくえば分岐ぶんき効力こうりょく発揮はっきされるのがおくれる)。これは、分岐ぶんき命令めいれい処理しょりちゅうALU仕事しごとをさせて、分岐ぶんきにかかるオーバーヘッドを隠蔽いんぺいするための手法しゅほうである。現在げんざいは、CPUの速度そくどとメモリアクセスのひろがり、またスーパースカラ構成こうせいをとる場合ばあいには遅延ちえんスロットに適切てきせつ個数こすうわるなど、実装じっそう影響えいきょうけるためにくない仕組しくみとかんがえられていて、最近さいきんのRISCでは実装じっそうけられている。

初期しょきのRISC

[編集へんしゅう]

最初さいしょのRISCは開発かいはつ時点じてんではRISCであるとは認識にんしきされていなかった。それは1964ねんSeymour CrayとJim Thorntonが設計せっけいしたCDC 6600スーパーコンピュータである。ThortonとCrayは数値すうち計算けいさんのためにわずか74種類しゅるい命令めいれいをもつCPUと周辺しゅうへんプロセッサ(OSだい部分ぶぶんはこちらで実行じっこうされる)とばれる12しゅ単純たんじゅんなコンピュータを設計せっけいした。CDC 6600にはたったふたつのアドレッシングモードしかなかった。CPUは演算えんざんようの11ほんのパイプラインとロードようの5ほんのパイプラインとストアようの2ほんのパイプラインをつ。メモリは複数ふくすうのバンクにかれていて、ロード/ストアは並行へいこうして実行じっこうすることが出来できた。命令めいれい実行じっこうサイクルはメモリアクセスにかかる時間じかんの10ばいはやさであった。

もうひとつの初期しょきのロード/ストアマシンとしては1968ねん設計せっけいされたデータ・ゼネラルNovaがある。

もっと一般いっぱんられているRISCはDARPAVLSI計画けいかく一環いっかんおこなわれた大学だいがくでの研究けんきゅうである。VLSI計画けいかく今日きょうではあまりられていないが、チップの設計せっけい製造せいぞうコンピュータグラフィックスなど様々さまざま特筆とくひつすべき成果せいかしている。

カリフォルニア大学だいがくバークレーこうのRISCプロジェクトはデイビッド・パターソン指揮しきした1980ねん開始かいしされた。基本きほんてきかんがかたはパイプラインと今日きょうレジスタ・ウィンドウとしてられている大胆だいたんなレジスタの用法ようほうであった。どう時期じきのCPUが内蔵ないぞうするレジスタ本数ほんすう少数しょうすうかぎられていて、プログラムはその範囲はんいでレジスタを使つかいまわした。レジスタ・ウィンドウをつCPUでは、アーキテクチャじょう128ほんのレジスタをつが、プログラムからはある瞬間しゅんかんに、特定とくていのレジスタ・ウィンドウにぞくする8ほんのレジスタのみがえる。CPUはプロシージャ(ルーチン、関数かんすう)ごとにべつのウィンドウをあてて、プロシージャごとに相互そうごことなる8ほんのレジスタを使用しようする。そのためプロシージャコールや復帰ふっききわめて高速こうそく実施じっしされる[ちゅう 4]

当時とうじ、パターソンらは、RISCはCPUを1チップにおさめるための制約せいやくした単純たんじゅんなアーキテクチャを設計せっけい実装じっそうしたもので、性能せいのう低下ていかするとかんがえていた。レジスタ・ウィンドウは、その性能せいのう低下ていかおぎなうために導入どうにゅうされたのである。1981ねん発表はっぴょうされた論文ろんぶんでは、VAX11/780にたいして実行じっこうサイクルすうで4ばいとの性能せいのうしめされたが、RISCの効果こうかただしく評価ひょうかされず、レジスタ・ウィンドウによる効果こうかだと説明せつめいされていた[5]

このRISCプロジェクトは1982ねんにRISC-Iを完成かんせいさせた。どう時期じきのCISCプロセッサが10まんのトランジスタからなっていたのにたいして、わずか44,420のトランジスタからなるRISC-Iは32種類しゅるい命令めいれいしかたなかったが、きわめて高性能こうせいのうだった。いで1983ねんにRISC-Iの3ばい性能せいのうのRISC-IIが登場とうじょうした。RISC-IIは40,760のトランジスタからなり、39種類しゅるい命令めいれいっていた。

おなじころ、ジョン・L・ヘネシー1981ねんスタンフォード大学だいがくMIPSプロジェクトを開始かいしした。MIPSでは命令めいれいパイプラインを可能かのうかぎりフルに動作どうささせることを目標もくひょうとしていた。命令めいれいパイプラインはすでにほかでも使つかわれていたが、いくつかの工夫くふうによりMIPSのパイプラインは非常ひじょう高速こうそく動作どうさした。もっと重要じゅうようてんすべての命令めいれいを1クロックサイクルで実行じっこうされるようにしたことである。これによりパイプラインは最大限さいだいげん効果こうか発揮はっきしプロセッサの高速こうそく実現じつげんした。ただし、乗算じょうざん除算じょざんといった有用ゆうよう命令めいれい省略しょうりゃくされていた。

チップじょうにRISCのCPUをつくるという最初さいしょこころみは、1975ねんIBMおこなったもので、上述じょうじゅつ大学だいがく研究けんきゅうよりもはやい。プロジェクトが開始かいしされた建物たてもの番号ばんごうをとってIBM 801づけられたプロセッサファミリはIBMのマシンにひろ応用おうようされた。1981ねん製造せいぞうされたシングルチップのROMPResearch (Office Products Division) Mini Processorりゃくであり、名前なまえ小型こがた市場いちば意識いしきしていることをしめしている。これを使つかって1986ねんIBM RT-PCをリリースしたが、性能せいのうてきには問題もんだいがあった。とはいうものの、801はいくつかのプロジェクトをし、のちにここからPOWERまれることになった。

初期しょきのRISCは、単純たんじゅん小型こがたながらたか性能せいのう発揮はっきする効果こうかられていたものの研究けんきゅうしつレベルでとどまっていた。バークレーの成果せいかはよくられるようになったため、RISCという言葉ことば一般いっぱんすることになった。おおくのコンピュータ業界ぎょうかい関係かんけいしゃは、実際じっさい商用しょうようアプリケーション高速こうそく実行じっこうできなければ意味いみがないと批評ひひょうし、それを使つかおうとしなかった。しかし1986ねんかく研究けんきゅうプロジェクトの成果せいか製品せいひんとなっていった。実際じっさい、ほとんどのRISCプロセッサはRISC-IIの設計せっけいをコピーするところからはじまっている。

現在げんざいのRISC

[編集へんしゅう]

2009ねん現在げんざいでは、「RISCたいCISC」という単純たんじゅん優劣ゆうれつ論争ろんそうは、技術ぎじゅつてきにはもはや意味いみたない。x86などの代表だいひょうてきなCISCプロセッサは内部ないぶてきにRISCのアーキテクチャを段階だんかいてき[6]ぎゃく代表だいひょうてきなRISCプロセッサは命令めいれい追加ついかつづけているためである[7]

RISCの当初とうしょ設計せっけい思想しそうは「すくない簡潔かんけつ命令めいれいすうによる、回路かいろ設計せっけい単純たんじゅんとパイプライン効果こうか最大さいだいによって、性能せいのう向上こうじょうていコストさらには容易ようい動作どうさ周波数しゅうはすう向上こうじょう実現じつげんする」ものであった。しかし現在げんざい主要しゅようなRISCプロセッサは、商用しょうよう計算けいさんよう10進数しんすう演算えんざんや、暗号あんごう仮想かそうアウト・オブ・オーダー実行じっこうなどの複雑ふくざつ命令めいれい追加ついかつづけている。この背景はいけいには、当初とうしょより幅広はばひろ用途ようとあたらしい機能きのうもとめられていること、性能せいのう確保かくほしたまま多数たすう命令めいれい実装じっそうできる半導体はんどうたい技術ぎじゅつ回路かいろ設計せっけい技術ぎじゅつ向上こうじょう単純たんじゅん動作どうさ周波数しゅうはすう向上こうじょうには消費しょうひ電力でんりょく発熱はつねつなどの副作用ふくさよう限界げんかいがあった。以降いこうマルチコア性能せいのう向上こうじょうかじることになる。このため現在げんざいでは高性能こうせいのうなプロセッサの開発かいはつは、開発かいはつ費用ひよう製造せいぞう費用ひよう設備せつび投資とうしなど)も膨大ぼうだいになり、だい規模きぼなチップメーカー以外いがいはハイエンドのプロセッサの開発かいはつ製造せいぞう困難こんなんとなっている。

とはいえ、命令めいれいすう回路かいろ規模きぼ以外いがい依然いぜんとしてRISCの設計せっけい思想しそうつよのこる。命令めいれいは32ビットチップこそ固定こてい小数しょうすう32ビット、浮動ふどう小数しょうすう64ビット、SIMDが128ビットとなるがかくユニットでつね固定こていちょう、アドレッシングモードもレジスタ - レジスタとロード・ストアのしゅしかないことにわりなく、レジスタはIA-64べつとして、x64比較ひかくしてもばいの32ほん以上いじょうつ。こうしたこともあって、プロセッサの分類ぶんるいとして、x86やSystem zなどを「CISC」、MIPSPOWERSPARCなどを「RISC」とことは、なお一般いっぱんてきである。

市場いちばべつには、市場いちばでは命令めいれいセットの後方こうほう互換ごかんせい重視じゅうしされず、てい消費しょうひ電力でんりょくなプロセッサがつよもとめられることからRISCが優勢ゆうせいである。とく携帯けいたい電話でんわ・ネットワーク機器ききストレージのコントローラなど32ビット64ビット高性能こうせいのうひんはほぼRISCが独占どくせんしている(だい多数たすうARMRISC-Vなど)。過去かこ命令めいれいセットとの後方こうほう互換ごかんせい重視じゅうしされるパーソナルコンピュータながらくCISC(x86)が主流しゅりゅうで、一時いちじはx86の独占どくせん状態じょうたいにあったが、Appleシリコン代表だいひょうされるカスタムチップながれのなかでRISC(ARM)の勢力せいりょく伸長しんちょうしている。かつてRISC(MIPSPOWERSPARCなど)が勢力せいりょくほこっていたUNIXサーバ・ワークステーション市場いちばではPC市場いちばのスケールメリットをかせるCISC(x86)が多数たすうとなり、RISCはハイエンドを中心ちゅうしん残存ざんそんする情勢じょうせいであったが、チップ設計せっけい自由じゆう電力でんりょく効率こうりつ武器ぶきにARMが攻勢こうせいつよめている。一方いっぽうゲームながらくRISCプロセッサが主流しゅりゅうであったが、PlayStation 4Xbox One以降いこうはCISC(x86)ベースのSoC採用さいようしている。

おもなRISCプロセッサ

[編集へんしゅう]

現行げんこうのプロセッサ

[編集へんしゅう]
SPARCサン・マイクロシステムズ富士通ふじつう
バークレーでの研究けんきゅう直接ちょくせつ製品せいひんされることはなかったが、サン・マイクロシステムズはRISC-IIのデザインを使つかってSPARC開発かいはつした。また、Pyramid Technologyもミッドレンジのマルチプロセッサ使用しようした。ほかにもおおくの企業きぎょうがRISC-IIのデザインを利用りようした。これはサンのあらたな機種きしゅひろ使つかわれ、RISCの効果こうからしめた。これにより、サンは急速きゅうそく成長せいちょうし、ワークステーション市場いちばをほぼ独占どくせんすることになった。しかし1990年代ねんだい後半こうはんにワークステーション市場いちばはX86アーキテクチャのPCやぶ消滅しょうめつした。現在げんざいでは同社どうしゃおよび共同きょうどう開発かいはつ富士通ふじつうサーバ専用せんよう少数しょうすう生産せいさんされている。
MIPS
ジョン・ヘネシーは一時期いちじきスタンフォード大学だいがくはなれてMIPSの商用しょうよう設計せっけいにとりかかるためミップス・コンピュータシステムズという企業きぎょう設立せつりつした。最初さいしょ製品せいひんだい世代せだいのMIPSチップR2000であった。MIPSのデザインはプレイステーションNINTENDO64などのゲームでも使つかわれ、もっとおお出荷しゅっかされ使つかわれたRISCチップとなった。現在げんざいではみシステムようのハイエンドのプロセッサとして有名ゆうめいである。
POWERPowerPCIBM
IBMはRT PCでの失敗しっぱい教訓きょうくんとして次期じきマシンRS/6000のベースとするためにPOWERアーキテクチャを設計せっけいした。POWERを小規模しょうきぼしたPowerPCでは、IBM固有こゆう様々さまざま命令めいれい排除はいじょされてシングルチップされた。PowerPCはデスクトップけでは1994ねんより2006ねんまでMacintosh使つかわれた。PowerPCコアは、東芝とうしばなどと共同きょうどう開発かいはつCellふくめ、スーパーコンピュータからみシステムまで幅広はばひろ展開てんかいし、きのゲームにもおお使つかわれていた。
ARM (Acorn→ARM Ltd)
ARM1~3がAcornArchimedesなどに搭載とうさいされたのちに、AppleNewtonけプロセッサの共同きょうどう開発かいはつすすめるためプロセッサ開発かいはつ部門ぶもんがARMとして独立どくりつ。RISC-CPUのなかでもとくてい消費しょうひ電力でんりょく注力ちゅうりょくした設計せっけいをもつ。みシステムけとして各社かくしゃにライセンス展開てんかいし、Androidスマートフォンをはじめとした市場いちばでは圧倒的あっとうてきなシェアをほこる。サーバファームニンテンドーDSなどの携帯けいたいゲームにも利用りようされる。
SuperH日立製作所ひたちせいさくしょルネサス エレクトロニクス
みシステムけで、SH-1~SH-5がある。コードサイズの効率こうりつねらって固定こてい命令めいれいちょうを16ビットとした。このコンパクトな命令めいれいセットは他社たしゃ命令めいれいセットにも影響えいきょうあたえた。セガのゲームにも使用しようされた。
OpenRISCOpenCoresコミュニティ)
オープンソースハードウェア。ハードウェアのデザインはGNU LGPLで、モデルとファームウェアがGNU GPLでそれぞれ公開こうかいされている。
RISC-V (カリフォルニア大学だいがくバークレイこう)
オープンでフリーの命令めいれいセット。ハードウェアの実装じっそうは、企業きぎょう開発かいはつしゃによっておこなわれている。
V850NEC→ルネサス エレクトロニクス)
M32R (三菱電機みつびしでんき→ルネサス エレクトロニクス)
Atmel AVR
ESi-RISC

終息しゅうそくしたプロセッサ

[編集へんしゅう]
  • ROMP (IBM):世界せかいはつ商用しょうようRISCチップとしてRT-PC搭載とうさいされたが普及ふきゅうせず、POWERがれた。
  • i860/i960インテル
  • 88000モトローラ):ほとんどれなかったため、モトローラはほどなくIBMのPowerPCの製造せいぞう参加さんかした。
  • 29000 (AMD):1990年代ねんだい初頭しょとう、ポピュラーなRISCプロセッサのひとつだった。PostScript プリンタのインタプリタ処理しょりプロセッサとしてひろ使用しようされた。
  • PA-RISC (HP):同社どうしゃのワークステーションで使用しようされた。Itaniumへの移行いこうともない、PA-RISC搭載とうさいマシンの出荷しゅっか停止ていししているが、ふるいシステムでは2011ねん現在げんざい利用りようされていることもある。
  • Alpha (DEC):64ビット構造こうぞうるCPUで、ワークステーションや用途ようとけ。RISC-CPUのなかでも最速さいそくほこったが、1997ねんにインテルから11けん特許とっきょ侵害しんがいうったえられやく15おくドルの買収ばいしゅう和解わかいした[8]。また同社どうしゃコンパック買収ばいしゅうされたのち、さらにコンパックはHPに買収ばいしゅうされ縮小しゅくしょう一途いっと辿たどった。インテルに譲渡ゆずりわたされた開発かいはつチームは各社かくしゃり、それぞれべつのRISC CPUにたずさわっている。2016ねん6がつ世界せかい最速さいそく評価ひょうかされたスーパーコンピュータ神威かもいふとしひかり使用しようされている中国ちゅうごくせいCPUのベースとなっている。

RISCライクなプロセッサ

[編集へんしゅう]

脚注きゃくちゅう

[編集へんしゅう]

注釈ちゅうしゃく

[編集へんしゅう]
  1. ^ たとえば、カウンタレジスタをデクリメントし、減算げんざん結果けっかゼロであればジャンプし、ゼロであれば後続こうぞく命令めいれい実行じっこうする、ループを構成こうせいするのに便利べんり命令めいれいや、文字もじれつ転送てんそうするストリング命令めいれいなど
  2. ^ データの退避たいひ復帰ふっき発生はっせいのレジスタの退避たいひサブルーチンからリターンするさいのアドレスの保存ほぞんなど。
  3. ^ これは特別とくべつ同期どうき命令めいれい実行じっこうするまで、コードが存在そんざいする位置いちのメモリをえても命令めいれい実行じっこう影響えいきょうしないということである。なぜならCPUは分離ぶんりされた命令めいれいキャッシュとデータキャッシュをっているため
  4. ^ 通常つうじょうのCPUでは、サブルーチンコールにレジスタの内容ないようをメモリのスタック領域りょういき退避たいひさせ、復帰ふっきするときにメモリからレジスタにもど

出典しゅってん

[編集へんしゅう]
  1. ^ RISCムーブメントが「IBM以外いがい」できた、その理由りゆう - ITMedia
  2. ^ "RISC I: A REDUCED INSTRUCTION SETVLSI COMPUTER"
  3. ^ a b ヘネシー&パターソン, p.478
  4. ^ Hisa Ando 2011, p. 128.
  5. ^ 五島ごしま正裕まさひろ「20世紀せいき名著めいちょ名論めいろん」『情報処理じょうほうしょり』46かん3ごう、317ぺーじ情報処理じょうほうしょり学会がっかい、2005ねん3がつ。 これはげん論文ろんぶん下記かき)の評論ひょうろんである。
    David A. Patterson and Carlo H.Sequin, “RISC I:A Reduced Instruction Set VLSI Computer” Proc. Int`l Symp. On Computer Architecture, 1981, pp. 443-457.
  6. ^ Hisa Ando 2011, p. 127.
  7. ^ Hisa Ando 2011, p. 129.
  8. ^ 後藤ごとうひろししげる (1997ねん10がつ31にち). “IntelとDEC、電撃でんげき提携ていけいでMPUの勢力せいりょく地図ちずわる”. IMPRESS PC Watch. インプレス. 2020ねん9がつ28にち閲覧えつらん

参考さんこう文献ぶんけん

[編集へんしゅう]
  • ジョン・L・ヘネシー ちょ中条ちゅうじょうたくはく, 天野あまの英晴ひではる, 吉瀬よしせ謙二けんじ, 佐藤さとう寿ひさしりん やく『コンピュータアーキテクチャ 定量ていりょうてきアプローチ だいよんはん』(初版しょはんしょうおよげしゃ、2009ねんISBN 978-4-7981-1440-8 
  • Hisa Ando『プロセッサをささえる技術ぎじゅつ : てしなくスピードを追求ついきゅうする世界せかい技術評論社ぎじゅつひょうろんしゃ、2011ねん1がつ25にちISBN 978-4-7741-4521-1 

関連かんれん項目こうもく

[編集へんしゅう]

外部がいぶリンク

[編集へんしゅう]