CISC

CISCの最新ニュースをまとめて検索!

CISC(しすく、: Complex Instruction Set Computer複合命令セットコンピュータ)は、コンピュータ命令セットアーキテクチャ(ISA)の設計手法の一つで、可変長の複雑な命令を持つ。CISCは、RISCが考案されたときに、対義語として名付けられた。このためRISC登場以前の設計手法は、全てCISCと呼ばれる。

CISCを採用したプロセッサ(CPU)をCISCプロセッサと呼ぶ。CISCプロセッサの例には、マイクロプログラム方式を採用したSystem/360PDP-11VAXなどや、マイクロプロセッサMC 680x080x86などがある。

目次

[編集] 概要

現在の高性能CPUでは、80x86互換プロセッサがCISCの典型であるが、ARMアーキテクチャ[1]もCISCに似たアーキテクチャを持つ。古くからミニコンピュータメインフレームに採用されていたほか、モトローラ社のMC 680x0 (68K) 系プロセッサもCISCの系譜である。命令語長が可変長であるため、昔は命令のデコードが終わらなければ次の命令の語の先頭アドレスが判らないという欠点があった。[2]

アセンブラ言語時代には豊富なアドレッシング機能を備えて、命令の直交性が良いとされていた。すなわち任意の演算で、どのアドレッシングでも使える。演算はレジスターレジスタ間演算のほかに、レジスターメモリ演算、メモリ-メモリ演算を備えているのが普通で、オペランドは2オペランドから3オペランドまで指定できるタイプが多い。つまり、メモリ1の内容とメモリ2の内容を論理積を取ってメモリ3に格納するというようなことが1命令でできる。C言語条件演算子 "?:"はCISCであったPDP-11が備えていた命令の名残りとされる。

インデックスアドレッシング時のオフセットも命令のデータ語長に合わせてスケーリングされることが多い。また、データ語長の異なるデータ間の演算でも演算前に自動的に符号拡張などが行なわれるため、データ長を揃える命令が必要ない場合が多い。データの境界をメモリ上の何処にでも(奇数アドレス)置ける便利で空間利用効率の良いCPUも多い。 1命令中で行なう処理が複雑なため、マイクロプログラム方式で実装されることが多い。

[編集] 構造

CPUの単一パイプラインを1/8語、1/4語、1/2語、1語、2語、3語、4語・・・と自在な演算器(実行ユニット)資源にて実現できる柔軟性を持つ構造。マイクロプログラム方式にすることで外部には同じインストラクションセットを維持したまま、このように内部マイクロアーキテクチャを増強していくことができる。マイクロプログラミング方式とはマイクロアーキテクチャたる内部CPUが万能チューリングマシンとして外部CPUをシミュレートすることである。その時点の実装技術で最も有効な内部CPUが外部CPUをシミュレートして後方互換性を実現する。このようにCISCは後方互換性を維持したまま持続的に性能と機能を向上できるアーキテクチャである。

[編集] 歴史

初期のCPUは半導体の集積度が低いため、内部の演算器や実行ユニットのbit長がワード長より大幅に短かった。典型的には32bit=1ワードに対して演算器は4bitで8回の演算を繰り返して32bit同士の計算を実行していた。この繰り返し演算がCPUパイプラインの単一「実行」ステージの内部で行われていた。このようなアーキテクチャをビットスライスプロセッサと呼び、実行ユニットが4bitの場合に16進アーキテクチャと呼ばれた。

半導体の集積度が向上するにしたがって演算器のビット幅は向上し、CPUの内部構造は変更される。インストラクションセットの互換性を保ったまま内部アーキテクチャを容易に更新するためにマイクロプログラム方式が採用された。CISCは当初から単純なマイクロアーキテクチャで豊富な機能を実現するためにマイクロプログラム方式を使っていた。実行ステージで時間がかかるのでメモリレイテンシは問題ではなかった。メモリ間演算は理にかなっていた。

半導体の集積度が向上し、単一CPUの実行パイプラインが1/8語、1/4語、1/2語、1語実行ユニットと向上したときにRISCコンセプトが標榜された。RISCは1チップに集積されたCMOSマイクロプロセッサが32bit 1ワード実行ユニットで固定されるという前提に立って、単純化した構造で最適化すればCISCに勝てると考えていたようである。しかしCMOS半導体の集積度は向上し続け、スケーリング則により内部クロックは向上し続けた。オンチップキャッシュからのメモリレイテンシは増え続け、前提はすぐに崩れた。

CISCは引き続きCMOS半導体の集積度の向上に伴って、単一CPUのパイプラインを2語、3語、4語同時実行ユニットに向上した。複数実行ユニットにする方法がスーパースケーラであり、更にその実行ユニット数を向上させる手法がアウトオブオーダ実行投機的実行である。これらは増加したメモリレイテンシの時間を有効利用して、複数可変長パイプライン実行ユニットに対してレジスタリネーミングを割り当てる複雑な内部構造になる。

このように、CISCは半導体の集積度の向上に伴い多数の実行ユニットに自動的に命令パイプラインを割り当てるマイクロアーキテクチャを発達させ、ソフトウェアを書き換えることなく性能の向上を実現してきたが、現在ではマイクロアーキテクチャの複雑化による持続的な性能向上は限界に達し、マイクロプロセッサの高速化はマルチコア同時マルチスレッディングSIMDによる性能向上に舵を切っている。これらの並列化手法による性能向上を享受するには、ソフトウェアの書き換えが必要になる。

[編集] 現在のCISC

詳細は「RISC#現在のRISC」を参照

1990年代には「CISCはRISCに置き換わる」という意見が多かったが、CISCプロセッサは内部的にRISCの技術を採用し、RISCプロセッサは逆に命令数の追加を続けた事もあり、2000年代には技術的な相違点は減少し、2009年現在でも両者は競っている。

[編集] 主なCISCプロセッサ

[編集] 現行のプロセッサ

[編集] CISC派生のプロセッサ

  • Coldfire - 680x0の派生アーキテクチャ。
  • ARMアーキテクチャ - 6502から派生。CISCに似たアーキテクチャを持つが、RISCに分類されることが多い。

[編集] 終息したプロセッサ

[編集] 脚注

  1. ^ RISCに分類されることが多いが、可変長の命令、バンク切り替えなどCISC風の特徴を持つ。
  2. ^ フェッチした結果を1ワードずつ全て命令であるとみなしてデコードして、その中から有効なデコード結果の組み合わせを選択するという方式が1995年頃に確立したので、命令長が可変であることは回路規模を大きくするが1クロックサイクルで1命令ずつしかデコードできない訳ではない。近年のプロセッサは5命令から20命令を一度にデコードできる。
  3. ^ スパコンTOP500 - ORNLのJaguarがRoadrunnerを破りトップに躍り出る - マイコミジャーナル

[編集] 関連項目

[編集] 外部リンク

最終更新 2009年11月21日 (土) 12:12 (日時は個人設定で未設定ならばUTC)。
【CISC】変更履歴

ご利用上の注意

もっと調べる!