CISC
出典: フリー百科事典『ウィキペディア(Wikipedia)』
CISC(シスク)は複雑高度な命令セットを持つ、マイクロプログラム方式の従来型のアーキテクチャ。Complex Instruction Set Computerの頭文字。RISC型CPUが考案されたときに、対義語として名付けられた。CPU実装法のメインストリームである。
主にメインフレームや80x86互換プロセッサ、米モトローラ社のMC 680x0 (68K) 系プロセッサに採用されている。命令語長が可変長である為、昔は命令のデコードが終わらなければ次の命令の語の先頭アドレスが判らないという欠点が有った。[1]
普通は豊富なアドレッシング機能を備えており、命令の直交性が良い。すなわち任意の演算で、どのアドレッシングでも使える。演算はレジスターレジスタ間演算のほかに、レジスターメモリ演算、メモリ-メモリ演算を備えているのが普通で、オペランドは2オペランドから3オペランドまで指定できるタイプが多い。つまり、メモリ1の内容とメモリ2の内容を論理積を取ってメモリ3に格納するというようなことが1命令で出来る。C言語の条件演算子 "?:"はCISCであったPDP-11が備えていた命令の名残りとされる。
インデックスアドレッシング時のオフセットも命令のデータ語長に合わせてスケーリングされることが多い。又、データ語長の異なるデータ間の演算でも演算前に自動的に符号拡張などが行なわれる為、データ長を揃える命令が必要ない場合が多い。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語同時実行ユニットに向上した。複数実行ユニットにする方法がスーパースカラであり、更にその実行ユニット数を向上させる手法がアウトオブオーダ、投機的実行である。これらは増加したメモリレイテンシの時間を有効利用して、複数可変長パイプライン実行ユニットに対してレジスタリネーミングを割り当てる複雑な内部構造になる。マルチ実行ユニットはRISCでは対応できない。[2]
CISCはマルチ実行ユニットの改良をサブ実行ユニット時代と同じようにマイクロプログラム方式で吸収してRISCとの性能競争に勝ち抜いた。現在、汎用高性能CPUは全てCISCアーキテクチャに収斂された。[3]
[編集] 脚注
- ^ フェッチした結果を1ワードずつ全て命令であるとみなしてデコードして、その中から有効なデコード結果の組み合わせを選択するという方式が1995年頃に確立したので、命令長が可変である事は回路規模を大きくするが1クロックサイクルで1命令ずつしかデコードできない訳ではない。近年のプロセッサは5命令から20命令を一度にデコードできる。
- ^ 近代のRISCアーキテクチャも命令セットアーキテクチャとマイクロアーキテクチャを分離し、内部での並列性を向上している。CISCに対するアドバンテージは回路規模であり、およそ同じダイサイズのシリコンの上に4倍から16倍の並列ユニットやマルチコア化を実現し、シングルコアではChip Size Package製品など組み込み向けにシェアを伸ばしている。
- ^ 2007年現在、スーパーコンピュータに搭載されるCPUシェアの90%がCISCによって占められている。