複合命令セットコンピュータ

複合命令セットコンピュータCISC / ˈ s ɪ s k /)は、単一の命令で複数の低レベル操作(メモリからのロード、算術演算、メモリへのストアなど)を実行したり、単一命令内でマルチステップ操作やアドレッシングモードを実行したりできるコンピュータアーキテクチャです[ 1 ]この用語は、縮小命令セットコンピュータ(RISC)[ 2 ]と対比して後から造られたため、 RISC以外のすべてを指す包括的な用語になっています。 [ 3 ] RISCアーキテクチャの最も一般的な差別化要因のいくつかは、均一な命令長と厳密に分離されたメモリアクセス命令です。

CISCアーキテクチャの例には、複雑なメインフレームコンピュータから、メモリのロードおよびストア操作が算術命令から分離されていない単純なマイクロコントローラまでが含まれます。[ 4 ]遡及的にCISCとラベル付けされた特定の命令セットアーキテクチャには、 System/360からz/ArchitecturePDP-11およびVAXアーキテクチャなど、多数あります。多くの学術出版物でCISCとラベル付けされている有名なマイクロプロセッサとマイクロコントローラには[ 5 ] Motorola 6800、6809、68000ファミリ、Intel 8080iAPX 432x86、8051ファミリ、Zilog Z80Z8Z8000ファミリ、National Semiconductor NS320xxファミリ、MOS Technology 6502ファミリなどがあり ます

一部の設計は、一部の専門家によって境界線上のケースとみなされています。例えば、Microchip Technology 社のPIC は、一部の専門家からは RISC と分類され、他の専門家からは CISC と分類されています。

刺激と利益

RISCの思想が主流になる以前、多くのコンピュータ設計者はいわゆるセマンティックギャップを埋めようと試みた。つまり、手続き呼び出し、ループ制御、複雑なアドレッシングモードといった高水準プログラミング構造を直接サポートする命令セットを設計し、データ構造や配列アクセスを単一の命令に統合しようとした。また、コード密度をさらに高めるために、命令は通常高度にエンコードされている。このような命令セットのコンパクトな性質により、プログラムサイズが小さくなり、メインメモリへのアクセス(多くの場合低速)が減り、当時(1960年代初頭以降)はコンピュータメモリとディスクストレージのコストを大幅に節約し、実行速度も向上した。また、FortranAlgolといった高水準言語が必ずしも利用可能であったり適切であったりしなかったため、アセンブリ言語であっても優れたプログラミング生産性を実現できた。実際、このカテゴリーのマイクロプロセッサは、特定の種類の重要なアプリケーションでは、今でもアセンブリ言語でプログラムされていることがある。[ 6 ]

新しい指示

1970 年代に高級言語を解析した結果、コンパイラが対応する複雑な機械語を生成することが判明しました。新しい命令によってパフォーマンスを向上できることが判明しました。アセンブリ言語での使用を想定していなかった命令もいくつか追加されましたが、これらはコンパイルされた高級言語にはよく適合します。コンパイラはこれらの命令を利用できるように更新されました。意味が豊かな命令をコンパクトなエンコーディングで実現する利点は、最新のプロセッサ、特にキャッシュが中心的コンポーネントとなっている高性能セグメント (ほとんどの組み込みシステムとは対照的) にも見られます。これは、これらの高速だが複雑で高価なメモリは、本質的にサイズが限られているため、コンパクトなコードが有利となるためです。もちろん、これらが必要な根本的な理由は、メインメモリ (つまり、今日のダイナミック RAM ) が (高性能) CPU コアに比べて依然として遅いためです。

設計上の問題

多くの設計では、低コストで高いスループットを実現し、高水準言語構造をより少ない命令で表現できるという目標を達成しましたが、必ずしもそうではないことが観察されました。例えば、複雑なアーキテクチャのローエンド版(つまり、ハードウェアの使用量が少ない)では、複雑な命令(手続き呼び出しや実行命令など)を使用せず、より単純な命令のシーケンスを使用することでパフォーマンスを向上できる場合があります。

その理由の一つは、設計者(マイクロコード作成者)がアセンブリ言語命令を「過剰設計」し、既存の基本ハードウェアでは効率的に実装できない機能を含めてしまうことがあったためです。例えば、(従来のフラグを超える)「副作用」として、おそらくほとんど使用されないレジスタやメモリ位置の設定などが発生する可能性がありました。これを通常の(重複のない)内部バス、あるいは外部バス経由で実行すると、毎回余分なサイクルが必要になり、非常に非効率になります。

バランスの取れた高性能設計であっても、高度にエンコードされた(比較的)高水準の命令を、限られたトランジスタ数の範囲内で効率的にデコード・実行することは、複雑になる場合がありました。そのため、このようなアーキテクチャでは、デコードテーブルやマイクロコードシーケンスに基づく、より単純だが(通常は)低速なソリューションが適切でない場合、プロセッサ設計者に多大な労力が要求されました。トランジスタなどの部品が限られたリソースであった時代では、部品数も少なくなり、他の種類の性能最適化を行う機会も少なくなっていました。

RISCのアイデア

多くの(ただしすべてではない)CISCプロセッサにおいて、マイクロコードで定義された動作を実行する回路自体は、多くの点で初期のCPU設計を彷彿とさせる構造をしています。1970年代初頭には、このことが、シーケンス処理やデコード処理のための (当時は比較的大規模で高価だった)ROMテーブルやPLA構造を必要とせずに処理をより実現可能にするために、よりシンプルなプロセッサ設計への回帰というアイデアを生み出しました。

初期(遡及的に)RISCと称されたプロセッサ(IBM 801  – IBMワトソン研究所、1970年代半ば)は、緊密にパイプライン化されたシンプルなマシンで、当初はCISC設計における内部マイクロコードカーネル(エンジン)としての使用を意図していましたが、RISCの概念をより広い層に紹介するプロセッサにもなりました。目に見える命令セットのシンプルさと規則性により、マシンコードレベル(つまりコンパイラが認識するレベル)での重複するプロセッサステージ(パイプライン)の実装が容易になりました。しかし、そのレベルでのパイプライン化は、当時実現可能な限られた部品数と配線の複雑さにもかかわらず、命令サイクル時間を短縮するために、一部の高性能CISC「スーパーコンピュータ」で既に使用されていました。一方、CISCプロセッサにおける内部マイクロコード実行は、個々の設計に応じてパイプライン化の程度が異なり、RISCプロセッサの基本構造とほぼ類似しています。

1965年に初めて納入されたCDC 6600スーパーコンピュータも、遡及的にRISCと呼ばれてきました。[ 7 ] [ 8 ] ロード・ストア・アーキテクチャを採用し、プログラマの制御下で最大5つのロードと2つのストアを同時に実行できました。また、同時に動作可能な複数の機能ユニットも備えていました。

スーパースカラー

より現代的な観点では、典型的な CISC アーキテクチャの一部で用いられる複雑な可変長エンコーディングにより、CISC プログラミング モデルのスーパースカラー実装を直接構築することが複雑ではあるものの、依然として実現可能である。インオーダー スーパースカラーの初代Pentiumやアウトオブオーダー スーパースカラーのCyrix 6x86がその有名な例である。典型的な CISC マシンのオペランドの頻繁なメモリ アクセスにより、コードから抽出できる命令レベルの並列性が制限される可能性があるが、これは最近の設計で用いられる高速なキャッシュ構造やその他の対策によって強く調整されている。本質的にコンパクトで意味が豊富な命令のため、マシン コード単位 (バイトまたはビットあたり) あたりの平均作業量は RISC プロセッサよりも CISC プロセッサの方が高く、これが現代のキャッシュベースの実装において大きな利点となる可能性がある。

ロジック、PLA、マイクロコード用のトランジスタは、もはや希少なリソースではありません。現在、最大トランジスタ数によって制限されるのは、大容量の高速キャッシュメモリだけです。複雑ではありますが、CISCデコーダのトランジスタ数は、プロセッサあたりのトランジスタの総数(通常、大部分はキャッシュに使用されます)のように指数関数的に増加しません。より優れたツールと強化されたテクノロジとともに、これは、ロードストア制限のない高度にエンコードされた可変長設計の新しい実装につながりました(つまり、非RISC)。これは、広く普及しているx86(下記参照)などの古いアーキテクチャの再実装や、組み込みシステムや同様の用途向けのマイクロコントローラの新しい設計を左右します。現代のx86の場合のスーパースカラーの複雑さは、命令を1つ以上のマイクロ操作に変換し、それらのマイクロ操作を動的に発行する、つまり間接的で動的なスーパースカラー実行によって解決されました。Pentium ProAMD K5はこの初期の例です。これにより、(かなり複雑な)デコーダ(およびバッファ)の後段に、比較的シンプルなスーパースカラー設計を配置することが可能となり、いわば多くの点で両方の長所を活かすことが可能となります。この手法は、IBM z196以降のz/Architectureマイクロプロセッサでも採用されています。

CISCとRISCの用語

1980年代半ばまでに、コンピュータ業界ではRISCの方がCISCよりも効率的であるというコンセンサスが形成されました。DEC (Digital Equipment Corporation)は、RISCの価格性能比はCISCの少なくとも2倍であると見積もっていました。CISCベンダーからの回答としては、以下の2つが考えられました。 [ 9 ]

  • 現在のアーキテクチャの限界に達するまで、CISCを可能な限り改良します。IBMメインフレームx86に採用されています。

インテルは、x86 を改良して RISC のパフォーマンスに匹敵させることに成功した。[ 10 ] CISC および RISC という用語は、CISC と RISC の設計と実装の両方の継続的な進化により、あまり意味をなさなくなってきた。最初の高度に(または緊密に)パイプライン化された x86 実装である、インテル、AMD、サイリックス、IBM の 486 設計は、先行機種のすべての命令をサポートしていたが、最大効率を達成できたのは、典型的な RISC 命令セット(つまり、典型的な RISCロード ストア制限がない)を少し上回るだけの、かなり単純な x86 サブセットのみだった。 [ 5 ]インテルP5ペンティアム世代は、これらの原則のスーパースカラー バージョンだった。ただし、最新の x86 プロセッサーは、(通常)命令をデコードして、内部でバッファーされるマイクロ操作の動的シーケンスに分割し、これによって、より大きな命令のサブセットをパイプライン(オーバーラップ)方式で実行

一般的な単純化(一部の学術文献にも見られる)に反して、すべての CISC がマイクロコード化されていたり、「複雑な」命令を持っているわけではない。[ 11 ] CISC はロード・ストア(RISC)アーキテクチャ以外のものを意味する包括的な用語になったため、CISC を定義するのは命令の数でも、実装や命令の複雑さでもなく、算術命令がメモリアクセスも実行するということである。[ 12 ]小型の 8 ビット CISC プロセッサと比較すると、RISC の浮動小数点命令は複雑である。CISC は複雑なアドレッシング モードを持つ必要すらない。32 ビットまたは 64 ビットの RISC プロセッサは、小型の 8 ビット CISC プロセッサよりも複雑なアドレッシング モードを持っている可能性がある。

PDP -10PDP-8、x86プロセッサ、Intel 4004、Motorola 68000シリーズプロセッサ、IBM Zメインフレーム、Burroughs B5000VAXZilog Z80000MOS Technology 6502は、命令の数、サイズ、形式、レジスタの数、タイプ、サイズ、および利用可能なデータ型が大きく異なります。文字列の部分スキャン、任意精度BCD演算、超越関数などの演算をハードウェアでサポートしているものもあれば、8ビットの加算と減算しかサポートしていないものもあります。しかし、これらはすべてCISCカテゴリ[ 13 ]に属します。なぜなら、実際の計算を実行するのと同じ命令でメモリの内容をロードおよび/またはストアする「ロード・オペレーション」命令を持っているからです。例えば、PDP-8は固定長命令が8つしかなくマイクロコードも全くないが、命令の動作原理からCISCである。PowerPCは230以上の命令(一部のVAXよりも多い)を持ち、その実装の中にはレジスタ名の変更リオーダバッファなどの複雑な内部構造を持つものもあるためRISCである。一方、Minimal CISCは命令が8つしかないが、メモリアクセスと計算を同じ命令で組み合わせているため明らかにCISCである。[ 14 ]

参照

参考文献

  1. ^ヘネシー, ジョン・L.; パターソン, デイビッド・A. (2012).コンピュータアーキテクチャ:定量的アプローチ(第5版). モーガン・カウフマン. pp.  14– 16. ISBN 978-0123838728
  2. ^ Patterson, DA ; Ditzel, DR (1980年10月). 「縮小命令セットコンピュータのケース」. ACM SIGARCH Computer Architecture News . 8 (6). ACM : 25–33 . doi : 10.1145/641914.641917 . S2CID 12034303 . 
  3. ^ Tanenbaum, Andrew S. (2006). Structured Computer Organization (第5版). Pearson. pp.  12– 14. ISBN 978-0131485211
  4. ^スタリングス、ウィリアム (2013). 『コンピュータの構成とアーキテクチャ』(第9版). ピアソン. pp.  48– 50. ISBN 978-0-13-2936330
  5. ^ a b Smith, James E. (1988). 「命令セットアーキテクチャの研究」. IEEE Computer . 21 (7): 8–22 . doi : 10.1109/2.46 .
  6. ^カーニハン、ブライアン・W. (2017). 『デジタル世界を理解する』 プリンストン大学出版局. pp.  87– 88. ISBN 978-0691176543
  7. ^ 「コンピュータの歴史:CDC 6000シリーズのハードウェアアーキテクチャ」 .ワールスドルプ博物館. 2023年7月23日. 2024年1月19日閲覧
  8. ^ Anthony, Sebastian (2012年4月10日). 「スーパーコンピュータの歴史」 . ExtremeTech . 2024年1月19日閲覧
  9. ^ Bell, Gordon ; Strecker, WD 「PDP-11から学んだこと - VAXとAlphaから学んだこと」(PDF)(レポート) 。 2025年6月26日閲覧
  10. ^ 「元Apple CEO、Intel買収を断念したことを後悔」 Forbes . 2003年10月9日. 2025年6月28日閲覧
  11. ^ヌル、リンダ、ロバー、ジュリア (2014). 『コンピュータの構成とアーキテクチャの基本』(第4版). ジョーンズ&バートレット. pp.  63– 65. ISBN 978-1284033144
  12. ^ Hennessy, John ; Patterson, David . Computer Architecture: A Quantitative Approach (PDF) . 2023年6月14日時点のオリジナルよりアーカイブ(PDF) . 2023年6月13日閲覧
  13. ^ファーバー、スティーブ (1989). 「RISC–CISC論争」.コンピュータ. 22 (5). IEEE: 29–37 . doi : 10.1109/2.24143 .
  14. ^ Jones, Douglas W. (1988-06-01). 「最小限のCISC」 . SIGARCH Comput. Archit. News . 16 (3): 56– 63. doi : 10.1145/48675.48684 . ISSN 0163-5964 . 

一般的な参考文献

  • Tanenbaum, Andrew S. (2006) Structured Computer Organization, Fifth Edition、Pearson Education, Inc. Upper Saddle River、NJ。

さらに読む

  • マノ、M.モリス著『コンピュータシステムアーキテクチャ』(第3版)ISBN 978-0131755635