なぜ誰もがCISCを望むのでしょうか?


42

コンピュータシステムの講義で、MIPSプロセッサについて紹介しました。これは、期間中に(再)開発されたものであり、実際には非常に理解しやすいものでした。RISC設計を使用します。つまり、基本コマンドは定期的にエンコードされ、配線をシンプルに保つためにそれらのコマンドはほとんどありません。

CISCは異なる哲学に従うと言われました。x86命令セットを簡単に見て、ショックを受けました。誰もが非常に複雑なコマンドセットを使用するプロセッサをどのように構築したいかを想像することはできません!

そのため、プロセッサ市場の大部分がCISCアーキテクチャを使用する理由について、適切な議論が必要であると考えています。彼らは何ですか?


回答:


47

一般的な歴史的傾向があります。

昔は、思い出は小さく、プログラムは少人数でした。また、コンパイラーはあまり賢くなく、多くのプログラムはアセンブラーで作成されていたため、少ない命令でプログラムを作成できるのは良いことと考えられていました。命令パイプラインは単純で、プロセッサは一度に1つの命令を取得して実行しました。とにかく、プロセッサ内部の機械は非常に複雑でした。命令のデコードは大きな負担になるとは感じられませんでした。

1970年代に、CPUとコンパイラの設計者は、このような複雑な命令を使用しても結局はあまり役に立たないことに気付きました。これらの命令が本当に効率的なプロセッサを設計することは難しく、これらの命令を実際に活用するコンパイラを設計することは困難でした。チップ面積とコンパイラーの複雑さは、より汎用的なレジスターなどのより一般的な追求によりよく費やされました。RISC上のWikipediaの記事は、これをより詳細に説明します。

MIPSは究極のRISCアーキテクチャであるため、頻繁に教えられています。

x86ファミリは少し異なっています。もともとは、非常に小さなメモリ(大きな命令のためのスペースがない)を対象としたCISCアーキテクチャであり、多くの連続したバージョンを経験しています。今日のx86命令セットはCISCであるため複雑であるだけでなく、実際にはPentiumを搭載した80386と8086であり、x86_64プロセッサを搭載している可能性があるためです。

今日の世界では、RISCとCISCは、かつてあったような白黒の区別ではなくなりました。ほとんどのCPUアーキテクチャは、さまざまなグレーの階調に進化しています。

RISC側では、一部の最新のMIPSバリアントには、不均一なエンコードを使用した乗算および除算命令が追加されています。ARMプロセッサはより複雑になりました。それらの多くは、CPUでJVM命令を実行するJazelleは言うまでもなく、「元の」32ビット命令に加えて、Thumbと呼ばれる16ビット命令セットを持っています。最新のARMプロセッサには、マルチメディアアプリケーション用のSIMD命令もあります。一部の複雑な命令は結局支払います。

CISC側では、最近のプロセッサーはすべて、ある程度RISC内部にあります。これらには、これらすべての複雑なマクロ命令を定義するマイクロコードがあります。プロセッサが非常に複雑であるため、RISC設計、多数のコンポーネント、パイプライン処理および予測実行などを含め、各モデルの設計には数年かかります。

では、なぜ最速のプロセッサーは外部のCISCのままなのでしょうか?その一部は、x86(32ビットおよび64ビット)ファミリの場合、歴史的な互換性です。しかし、それだけではありません。2000年代初頭、IntelはItaniumアーキテクチャの推進を試みました。Itaniumは複雑な命令の極端な例です(ただし、実際にはCISCではありません。その設計はEPICと呼ばれています)。それは、命令を順番に実行するという昔ながらのアイデアさえも排除します。すべての命令は、次の障壁まで並列に実行されます。Itaniumが採用しなかった理由の1つは、Intelであろうと他の場所であろうと、だれもそれに適したコンパイラを作成できないことです。今ではx86_64のような古くてほとんどシーケンシャルなプロセッサであり、それは我々が理解していることです。


4
その理由の1つは、CISCが限られたメモリから出てきたため(コンパクトな命令が必須)、今日のCPUはメモリよりもはるかに高速である(1回のメモリフェッチで数百の命令を実行するのに十分な時間がかかり、ギャップが拡大しているため)キャッシュを効果的に使用するには、コンパクトな命令が重要です。
フォンブランド

ああ、RISCを支える原動力の1つは、その日のCISCマシンで実行された命令の分析でした。彼らは圧倒的に単純な命令を発見したため、複雑な命令をデコードするための余分な労力(回路および時間)がほとんど無駄になりました。
フォンブランド

2
@vonbrand:のような命令を含むプロセッサではdec [address]、かなり頻繁に使用される傾向があり、ldr r0,[address] / sub r0,#1 / str r0,[address] それらを効率的に実装できるアーキテクチャに比べて大きな利点があります。RISCの出現は、パイプライン化されていないマシンがシーケンスのdec2倍以上load/sub/storeの速度を実装する可能性がある一方で、パイプライン化は、読み取り-修正-書き込みの速度を向上させるよりも、後者のシーケンスの速度を向上させることができるという事実に由来します命令。
-supercat

@vonbrandが正しいのは、RAMが以前ほど貴重ではないという点ですが、キャッシュはそうです。そのような意味では、ハフマンによる命令セットのコーディング(最近のCISCの一種)は依然として価値があります。
仮名

まあ、それは私がItaniumについて知らなかったことです!ありがとう。( -彼らはのためのプログラムに魅力的なことがしたいよう、彼らが聞こえる私はデザインが存在して知っているが、誰のFPGAをそれらをオフに行われていない-_-また、希望誰かがまだハイエンドMIPS CPUを作りました。)
Wyatt8740

15

x86命令セットは少し特殊なケースです。モトローラの68KとDECのVAXはCISCの良い例だと思います。多くのアセンブリ言語コードの時代、人々は非常に規則的で非常に包括的なISAの方が優れていると考えていました。アセンブリコードと、「セマンティックギャップ」の考え方の違いを呼んだと思います。理論的には、あなたの考えに合った命令セットが必要でした。

CISCの他の大きな設計ドライバーは「直交性」のようです。すべての命令がすべてのアドレッシングモード(レジスタ、絶対アドレス、相対オフセットなど)で機能します。分散コンピューティング環境(DCE)およびCORBAのAPI設計に、直交性のボギーな男が現れることがわかります。そのアイデアは、命令セットの設計に限定されません。


5
実際の直交性がどのようにすべてのオプションの結合を意味するかがおかしい。
デイブクラーク

その直交性は確かに遠すぎますが、それは記憶への有用なヘルパーです。私はMotorola 6502が大好きでしたが、レジスターの使用に関するあらゆる種類の腹立たしい「この命令はX、その類似のものはYのみ、3番目はまったくなし」という制限がありました。VAXとの出会いは解放されました
...-フォンブランド

@vonbrand:6502はMotorolaではなく、MOS Technologiesであり、Motorola 6800の競争相手として生産されました。オペランドは同じエンコードを使用しました(24命令×8アドレッシングモードは非常に簡単にデコードできます)。CMPが8つのアドレッシングモードで動作し、DECが4つだけで動作するのは特に不思議ですが、(6502のNMOSバージョンでは)これらの命令のオペコードを「OR」すると、「DCP」が得られるだけではありません。命令...
supercat

...これはDECのように動作しますが、デクリメントの結果をアキュムレータの値と比較し、フラグを適切に設定しますが、DCPはDECでは利用できないアドレス指定モードを正しく処理します。奇妙なことに、ハードウェアが読み取り/変更/書き込み命令を使用して(ZP)、Yアドレッシングを正しく処理できるのに、命令デコーダーは文書化された読み取り/変更/書き込み命令ではそのモードを動作させません。
supercat

1
私が読んだことから、RISCの「R」は、プロセッサの命令セットが削減されているという意味ではなく、命令のセットが削減されているという意味です。その最大の側面は、メモリのロードとストアを他の操作と組み合わせないという要件です。
supercat

7

CISCの1つの理由は、命令に高密度のエンコーディングを使用することでした(メモリは高価でした)。RISCの全体的なアイデアは、常に同じサイズの命令をフェッチすることでCPUを高速化し(複雑で遅い「サイズを小さくする」ス​​テップを実行しない)、単純なことをさせる(何をすべきかをすばやく把握する)ことでした。メモリは安かった。これにより、他のもののためにCPU上の回路領域が解放されました(より多くのレジスタ、より多くの処理ユニットなので、独立していれば複数の命令を並行して実行できます)。CPUはRAMよりもずっと低速だったため、これは報われました。しかし、CPUは高速になりました(そして、並列処理が増え、...)一方で、RAMは高速になりませんでした(少なくとも並列処理の増加によるCPUのデータ消費と同じ速度ではありませんでした)。CPUと同じくらい高速ですが、小さいキャッシュメモリに対応します。そのため、コストの理由ではなく速度の点で、メモリの価値が再び高まっています。CISCリバイバルタイム。一方、CPUはより複雑になり、今日のマイクロプロセッサは、RISCコンパイラの機能のほとんどを実行します。操作を基本部分に分解し、可能な限り同時に実行できるように内部RISCy命令を並べ替えます。RISCは、「コンパイラにとって重要なものを解き放つ」と悪口を言われました。理由は...


1
一部の組み込みシステム、特にすべてのメモリ/ストレージがプロセッサチップ上にあるマイクロコントローラでは、メモリ容量が依然として重要です。これはおそらく、ルネサスが新しいCISC ISA-RX-を導入した重要な要因でした。つまり、パフォーマンスのためのコード密度だけでなく、(主に?)ストレージの削減のためです。
ポールA.クレイトン

私が理解していることから、RISCの「R」は、命令セットが削減されるのではなく、命令自体が削減されることを指します。最も注目すべきは、8086のようなCISCプロセッサでは、値をメモリに直接追加できますが、RISCでは、ロード、追加、および保存を個別のステップとして実行する必要があります。多くの場合、CISCマシンには可変長の命令セットとRISCマシンよりも高密度の命令コーディングがありますが、新しいARMプロセッサは可変長の命令を使用しますが、ロードとストアは分離しています。
supercat

@ PaulA.Claytonこれは正しいですが、つまらないものであり、外部RAM(コントローラーを介してSRAMまたはDDRのいずれか)に接続し、複雑さを増し実用性を低下させることでメモリ容量を拡張できることを指摘します。
Wyatt8740

3

CISCの真の利点は、メモリとキャッシュの負荷が軽減されることです。このようなシステムの主要なボトルネックはメモリ帯域幅であるため、それだけで要求の高い高性能アプリケーションに適しています。同じサイズのキャッシュメモリがある場合、CISCプロセッサはRISCよりも多くの情報を記述できます。また、CISC命令には複数のマイクロオペレーションが含まれるため、個々の命令を書き出すことで実現できる、その命令の最速の実行パスを提供できるアーキテクチャの改善が可能です。要するに、CISCプロセッサはメモリ帯域幅の利用効率が高く、これは多くの場合、メモリを大量に消費するアプリケーションのパフォーマンス向上につながります。

たとえばR1 = R2 + R3 + R4 + R5 + R6、結果を実行してスタックにプッシュするには、RISCコードを次のように書きます。

ADD  R1, R2, R3 (4-byte)
ADD  R1, R4, R5 (4-byte)
ADD  R1, R6, R0 (4-byte, R0=0)
PUSH R1         (4-byte)

そのため、16バイトのスペースが必要です。

CISCに来ると、エンコードのスタイルが異なる可能性があるため、同じ情報が次のように表される場合があります...

ADD R1, R2, R3 (4-byte)
ADD R1, R4, R5 (4-byte)
ADD R1, R6     (2-byte)
PUSH R1        (1-byte) 

必要なメモリはわずか12バイトです。したがって、メモリ使用率が向上し、プロセッサがより多くの命令を参照できるようになり、アイドルサイクルが減少します。


1
これは有用な視点を提供しますが、形容詞の使用については少し誇張されているようです。「大幅なパフォーマンスの向上」-それを定量化したいですか?「巨大な」部分を正当化できますか?「より多くの情報」についても同様です。
DW

Linus Torvaldsが同様の声明を述べたと思う。とにかく形容詞は削除されました。
Revanth Kamaraj

これは事実ではありません。CISCはメモリ帯域幅を削減しません。多分圧力を登録します。
ジェフ

ジェフ、スティーブファーバーのARM socアーキテクチャを参照してください。
Revanth Kamaraj

Page 27第2版ARM System On Chipアーキテクチャ。
Revanth Kamaraj

2

したがって、だれも育てなかった重要な側面は、ほとんどすべてのCISC CPUがマイクロコード化されたアーキテクチャであることです。マイクロシーケンサーとコントロールストアは、ハードワイヤードコントローラーよりもはるかに少ない面積で消費され、命令セットはハードウェアを変更せずに変更できます。

私がこの分野に入ったとき、マイクロプロセッサは斬新なデバイスでした。70年代および80年代初期の非常に一般的なプラクティスは、ビットスライスALU、マイクロシーケンサーベースの制御ユニット、およびマイクロコード化された命令セットがロードまたはブローされる制御ストアを使用してCPUを組み立てることでした。これらのコンピューターは、7400シリーズのトランジスタートランジスターロジック(TTL)に基づいていました。78181 4ビットALUを使用して、DEC PDP-11および初期のVAX 11コンピューター、Data General Nova、Xerox Alto、およびWangデスクトップコンピューターを含む多くのプロセッサーを構築しました。


「だから誰も育てなかった重要な側面は、ほとんどすべてのCISC CPUがマイクロコード化されたアーキテクチャであるということです。」はいといいえ。命令のスケジューリングについては、最新のCISC CPUは通常、ハードレガシーCISC命令(x87超越命令など)のマイクロコード化された制御のみに頼っています。一方、RISCチップでさえ、一部のサブシステムのステートマシンの代替として(たとえば、特定のユニットを制御するために)マイクロコード制御を使用することがあります。確かに、マイクロコードと状態テーブルの間の線はあいまいになります。
仮名

2

x86互換プロセッサを使用していないデスクトップコンピューターを見つけるのは大変です。その命令セットはMIPSを破り、Sparcを破り、Alphaを破り、Titanicを破りました(その名前の綴りが間違っているかもしれません)。一方、MIPSは今日ではほとんど存在しません。ですから、今日何を考えても、非常に賢い人たちは、x86命令セットは本当に良いアイデアだと思い、それで大金を稼いでいます。

複雑な命令セットは実装者の能力を超えているため、コンピューターはRISCとして始まりました。RISC命令セットを表示する場合は、CDC 6400-6600およびCDC Cyber​​ 170-175命令セットをご覧ください。それが適切なRISCです。約10年前、私は一部のチップ設計者に必要なスペースを尋ねました(合理的な高度なGPUチップの隅)。彼らは私に、そのスペースの99%を占めるマシンのRAMを含めて1mm2について教えてくれました。

人々 CISCマシンを構築できたとき、彼らは実際に有利でした。x86は1978年と1985年のMIPSよりずっと前にリリースされたことを思い出してください。そのとき、命令の読み取り、デコード、実行にプロセッササイクルが必要でした。1978年のMIPSは、命令ごと、操作ごとに4サイクルかかりました。「メモリにレジスタを追加する」などのx86命令を使用する場合、その命令にはおそらく7サイクルかかりますが、3つの操作を実行します。それは大きな利点でした。また、使用する命令が多ければ多いほど、また各命令が強力であればあるほど、利点は大きくなります。

そして、悪夢のようなプレフィックスコードを備えたx86 64ビット命令セットが開発されたとき、命令セットの複雑さはもはや問題ではありませんでした。現在、CISCはRISCに翻訳されたばかりであり、翻訳ビジネス全体はチップの1%にすぎません。


1

この質問は、モバイルおよびタブレットコンピューティング、それによって有利に働くのRISC CPUに大規模なシフトを好むという計算に非常に最近の傾向でやるべきことがたくさん持っている、いわゆるで不利な立場にインテル(おそらく世界最大のCISCの御用達を)捕まえた「変曲ポイント」まさに一種のようなグローブに注目を集めたとの警告しました。要するに、CISC は、明らかに本質的にエネルギー消費量が多いため、モバイルコンピューティングの大規模なパラダイムシフト /ゲームチェンジの猛攻撃の下で溶け始めているようです。

CISCはおそらく常にデスクトップ上に存在しますが、モバイルはコンピューティングの新しい未来として広く認識されています。多くの発展途上国(潜在的なコンピューターを使用する人口が多い)は、実際にはデスクトップフェーズをほとんどスキップします。たとえば、デスクトップコンピューティングの盛衰

この質問の優れたケーススタディは、非常に強力なエグゼクティブと「スカンクワークス」のようなプロジェクト/イニシアチブを介してAtom CPU経由でIntelをモバイル市場でより良い位置にしようとする新しいポジションでIntelで働いているMike Bellについて読むことですサポート。モバイル市場は、主に高いエネルギー効率(消費電力)であるRISCアーキテクチャ、および主にARMプロセッサと密接に結びついています。これらの行に沿った最近の2つの記事は、このテーマに関する社内の多くの考え方(およびその後の混乱)を明らかにしています。


補遺。数学的概念と大まかに関連するビジネスベースの変曲点に関する記事を引用するためのものです。たとえば、Andy Groveと変曲点の謎を
vzn13年

0

他の回答で言及されていない要因は経済的です。また、Intelについてです。CISCアーキテクチャは、主にx86およびx64ファミリで表されます。これらはすべて、元のIBM PCで使用されていた謙虚な8088から派生しています。その一連のコンピューターの市場の初期の優位性は、IntelがR&Dのための堅実な収入源を持っていたことを意味しました。Intelが2番目のソース契約を無効化/キャンセルすることで競争を抑制できたという事実と相まって、CPU価格が極端なレベルまで上昇し、非常に豊かな粗利益を確保できることを意味しました。

そのため、他のCPUメーカーはペースを維持するのに苦労していましたが、Intelは数十億ドルを新しい、より高速な製品の開発に注ぎ込むことができました。RISC競技会では、それほど多くのお金を使うことができませんでした。多くのRISCプロセッサが市場から消えました。いくつかは:

DEC Alpha、Fairchild Clipper、AMD 29000、SPARC、MIPS、POWER(PC用)、Hitachi SuperH ...

私は、RISC対CISC戦争が終わり、CISCが勝ったと発表したその時代の専門家を思い出します。ありませんでした。それは他のすべての人よりも使い果たしただけです。

このダイナミックはいつまでも変わることができますか?すでにです。絶対的な経済的利点はありません。

x86の唯一のアキレス腱は、それが力に対する貪欲な欲求であるということです。これにより、エネルギー節約が重要な市場(電話/タブレットなど)で、より小さく、より機敏な競合他社(ARM)が成長することができました。

ARMチームのメンバーからのこれに関する素晴らしいビデオは、ARMプロセッサです-成功の種をSoく-8 :30頃のコンピューター愛好家

x86の2番目の問題は、Intelの戦略の成功です。彼らはほとんどすべての競争を排除することができました。彼らは減速した。ここ数年、新しいIntelプロセッサはごくわずかな改善しか提供していません。さらに悪いことに、超富裕層はどの企業にとってもあきらめるのは難しい食事です。

今日、ARMベースのSystems on Chip(SOC)およびAMDの競合x64チップが再びCPU市場を興味深い場所にしています。(私見では)


0

CISCの実装を選択する理由は多数あります。最も顕著な理由は、既存のCISC命令セットとのバイナリ互換性です。ソフトウェアバイナリ翻訳技術は改善されましたが、ハードウェアベースの互換性にはいくつかの技術的な利点(翻訳キャッシュが少ないという欠点もあります)と、信頼性が高いという技術的な利点が少ないことがあります。

コード密度は、おそらくCISCを選択する2番目に重要な理由です。ルネサスRXは、コードメモリサイズが重要なコスト要因であるマイクロコントローラーをターゲットとするため、コード密度専用のCISCとして設計されました。可変長命令、複雑な命令(主にアドレス指定モードの増加)、暗黙的なオペランド、およびレジスタ数の削減はすべて、コード密度にメリットがあります。

CISCを選択した歴史的な(そして、私の考えでは見当違いの)理由は、より高いレベルの言語を使用するプログラマとプロセッサの間のセマンティックギャップを埋めることでした。一般に、複雑な命令はより単純な命令のシーケンスで置き換えることができるため、RISCの高レベル言語コンパイラの複雑さは、言語に一致するCISCの場合よりもはるかに複雑である必要はありません。RISCは、「セマンティッククラッシュ」(プロセッサ命令が対応する言語ステートメントよりも多かれ少なかれ処理する場所)を回避し、強度の削減とスケジューリングの最適化を促進します。(詳細については、「CISCとRISCに関連するコンパイラ開発作業のトレードオフは何ですか?」を参照してください。)

命令の実行に関連する大きな固定費が発生する可能性があります。これにより、比較的複雑な命令を使用して、このオーバーヘッドを実際の作業に分散させることができます。動的な命令数を減らすと、パフォーマンスが向上します。ロジックとRAMのコストがROMのコストよりもはるかに大きい場合、命令はマイクロコードを検索してデコードされたため、複雑な命令に対するインセンティブは重要でした。

おそらく歴史的証拠と矛盾するCISCを使用する理由は、マイクロライブラリを各マイクロアーキテクチャに対して最適化できる一方で、標準ライブラリは新しい実装の機能を活用するのに時間がかかる可能性があるためです。REP MOVSBのマイクロコードの最適化レベルに対するmemcopyのソフトウェア実装の最適化レベルは、ライブラリがマイクロコードよりも注意を引くことができることを意味します。これの一部は、より広範なユーザーベースを対象とするプロセッサベンダーからもたらされる可能性があるため、開発者またはユーザーの局所的な関心が実装作業にバイアスをかけることができるオープンソースまたは内部ソフトウェアと比較して、作業の正当化がより難しい場合があります

プロセッサで最適化された標準ライブラリを出荷できることには大きな魅力があります。プラットフォーム標準ライブラリの保存と実行は、ソフトウェアとハ​​ードウェアのコードサインによって大幅に最適化できます。複雑な命令とプラットフォームアブストラクションレイヤーコールの違いは微妙な(または存在しない)場合があります。RISC設計では、一般的な命令セットで提供されていない操作を特殊なハードウェアで使用する、巧妙なキャッシュとデコードを使用する、レジスタオペランドを指定するなど、CISCが複雑な命令に対して行うのと同じ実装手法を使用できます(ただし、CISCは多くの場合、機能ごとのABIと同様の専用レジスタを使用します)。CISCに関連付けられているメンタルモデルは、このような最適化を促進できます。さらに、ユーザーが「

比較的複雑な命令のデコードは、命令のシーケンスがセマンティックユニットとして認識される同等のイディオム認識のRISC手法よりもオーバーヘッドが少なくなります(そして、おそらくより確実に意図を正確に修正できます)。このオーバーヘッドの違いは、小規模な実装で最も顕著になりますが、この情報を使用するオーバーヘッドにより、デコードの節約の重要性が低下します。

追加のコンテキスト情報は、ハードウェアの最適化を促進できます。たとえば、メモリ内の値をインクリメントするとき、ハードウェアはメモリアドレスが2回(ロードとストアに)使用されることを認識し、キャッシュ方法のメモ化と変換キャッシュの機会を提供します。複雑な命令は、そのような情報を明示的に提供できます。複雑な命令では、中間値には明示的な有効期間(命令の有効期間)があります。従来のRISCレジスタでは、活性の終了を示すために値を明示的に上書きする必要があります。(注:RISCは、各使用後に常にゼロになるレジスタを指定できます。これにより、使い捨ての一時的な値を指定する手段が提供されます。このような命令はやや複雑になります。)

実装の詳細が抽象化レイヤーの背後に隠されていない場合、異なるマイクロアーキテクチャを使用して異なるトレードオフを最適化することがより困難になります。マイクロアーキテクチャの詳細をアーキテクチャの保証として公開すると、マイクロアーキテクチャが互換性の保証に固定されます。PALソフトウェアは複雑な命令と同じように最適化できますが、そのためにはハードウェアとソフトウェアのコードサインが必要です。組織の分離と多様性により、コード署名がより困難になります。

複雑な命令は、特権状態への保護されたアクセスを提供できます。たとえば、複雑な命令は多くの場合、割り込みに関してアトミックです。RISC命令セットは、割り込みを一時的に中断するユーザーレベルのメカニズムを提供できますが、ソフトウェアは割り込みが発生した場合に明示的に操作を再試行するため、リンクロードのようなものもあります。

同様に、複雑な命令は、制御されたアクセスや特権情報の使用を提供できます。実行された操作はセマンティクスを制御しているため、実際の特権違反は回避できます。RISC指向の代替には、PALコード(通常、かなりのオーバーヘッドがあります)や、特権状態を持つ構成レジスタ(またはレジスタのシャドウコピー)へのマスクアクセスが含まれます。一般的なソリューション(RISC)を提供することは、1つまたはいくつかの特殊なケース(CISC)にソリューションを提供するよりも困難ですが、より強力で、特殊なケースの蓄積に対して脆弱ではありません。重要な特別なケースが少数であると考える場合、CISCはより魅力的です。

複雑な命令は、ソフトウェアから状態を隠すこともできます。そのような顕著な利点の1つは、コンテキストの保存と復元です。状態を保存および復元する命令を使用すると、アーキテクチャは、状態をメモリに転送するための特定のメカニズムではなく、コンテキストサイズをOSに伝えるだけで済みます。これにより、レガシーOS上で実行されるアプリケーションは、状態を追加するISA拡張機能を使用できます。(再び、PALソフトウェアは同じ機能を提供できます。)


x86の複雑さの多くは、多くの拡張機能間の互換性に起因しています。複雑で直交性の低い命令(コード密度に有用)で、一般に必要ではないことが判明した作業を削除し、不必要な依存関係チェーン(たとえば、キャリービット1つ、動的シフト量レジスタ1つのみ)を回避し、一般的に使用され、複雑な命令内で最適化することができます-これらのいずれも、新しい命令を追加し、ISAの美的満足度を下げる必要があります。

多くの場合、RISCではこのような問題は発生しません。これは、命令が非常に直交的でプリミティブだからです。場合によっては、RISCで新しいプリミティブを追加する必要があるかもしれませんが、そのようなものは通常、複数の用途に適用できます。

さらに、複雑な命令をサポートするためのインフラストラクチャが整ったら、追加の複雑な命令に対する障壁が軽減されます。つまり、非反復の複雑な命令のコストの大部分。RISC ISAには、CISCy機能の導入を補完する障害が強くあります。

また、x86の拡張頻度は、汎用コンピューティングおよびマーチャントプロセッサモデルの人気に一部起因している可能性があります(これらはバイナリ互換性の重要性も高めます)。RISC ISAは多くの場合、システムのベンダーに結び付けられており、アプリケーションに焦点を絞り、特定のRISC ISAの実装をめぐる競合がないため、命令セットの拡張機能をマーケティングに使用することをやめさせています。また、人気により、新しい拡張機能の開発コストはそれほど重要ではありません(量が多い場合、非経常的な費用はそれほど重要ではありません)。

x86互換性の哲学は、おそらく、よりクリーンなブレークを提供するのではなく、既存のメカニズムを拡張する方向に偏っています。つまり、新しい機能は既存の機能の影響を受けます。拡張の頻度が高くなると、インクリメンタルな変更も促進され、メカニズムの再利用が促進され、直交性が低下する傾向があります。

古典的なMIPS(最新バージョンのMIPSのサブセットであり、さまざまなオプションのISA拡張を除く)のアカデミックプレゼンテーションと最新のx86(バイナリ互換性を16ビット8086まで遡り、さらにアセンブリレベルの準互換性をさらに遡る)の比較過去のすべての手荷物については、CISCの最良のケースでも、RISCの現実的なケースでもありません。


-1

命令セット構成が削減される直前に、命令セット構成がありました。彼らは彼らのアプリケーションを持っています。特に、大容量のチップセットを使用した非常に大きなメモリブロックの転送では、ビデオページ全体を転送するのに4〜16バイトしか必要とせず、長いループではありません。それは変化しており、ハイエンドビデオカードに見られる信じられないほどのGPUのようにチップセットがより洗練されているため、RISCは現状になりつつあります。


-2

CISC CPUには、RISCよりも多くの利点があります。CISCはRISCよりも少ないハードウェアレジスタとXNOR / XORゲートを何度も使用するためです!!!! CISCの命令バイトが実行されるシーケンスを想像してください。使用される論理ゲートとレジスタは1つだけです。1個のbilionトランジスタで約3億個の論理ゲートを生成できる場合、300個のmilion演算子またはプロセス(IF、等しい、数学、変数、アドレス指定など)を処理でき、CISCでより多くのプログラムを実行できます。しかし、RISCでは、パイプライン設計でプログラムを実行するのに数十回の論理ゲートが必要です。300ミリオンx 50回(50命令)+ 15000000000ビットカウンター!!! いわゆるRISCで。CISCは、より多くのハードウェアを使用して、CPUを遅くするソフトウェアアルゴリズムを削減します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.