セントラルプロセッサ
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/04/29 01:43 UTC 版)
「CDC 6600」の記事における「セントラルプロセッサ」の解説
セントラルプロセッサ (CP) は X0 から X7 まで8個の汎用60ビットレジスタ、A0 から A7 まで8個の18ビットのアドレスレジスタ、B0 から B7 までの8個の18ビットの補助レジスタ(配列のインデックスに使用。B0の内容は常にゼロ)を持つ。補助的なレジスタ(スコアボードレジスタなど)はプログラマからはアクセスできない。RA および FL といったレジスタはオペレーティングシステムだけが値を設定する。CPは入出力に関する命令を持たず、周辺プロセッサ群(後述)を使って入出力を行う。RISC のロード/ストアの考え方を保持するため、メモリのロード/ストアを行う命令も存在しない。全てのメモリアクセスは A レジスタにアドレスをセットすることで行われる。A1 から A5 レジスタにアドレスを格納すると、対応する X レジスタ(X1からX5)にそのアドレスの位置のメモリの内容がロードされる。一方、A6、A7 レジスタにアドレスをセットすると X6 と X7 レジスタの内容が指定されたアドレス位置のメモリに書き込まれる(X0 と A0 レジスタはこの形式でのロード/ストアには関与しない)。ロード/ストアを行う装置は独立しており、命令列の実行とは切り離され、メモリアクセス中も他の命令を実行することができた。メモリアクセスには、最善の場合でも8サイクルを要した。最近の設計では、ロード/ストア命令があって、アドレスもその命令で指定される。浮動小数点演算はこのコンピュータアーキテクチャでは最も優先されていて、CDC 6600 は 60ビットの浮動小数点乗算命令を分岐命令よりも高速に実行できたのである。 6600 CP は 10 個の並列動作可能な機能ユニットを持ち、同時に複数の命令を実行することができた。今日ではスーパースカラもしくはハイパースレッディング・テクノロジーとして知られている一般的な手法であるが当時としては先進的な機能である。さらにScoreboardingという手法によりアウト・オブ・オーダー実行(OoO実行)を行った。これはIBM System/360モデル91のTomasuloのアルゴリズムによるOoO実行と並び最初期のものである。もっとも今日のモダンなCPU設計とは異なり、機能ユニットはパイプライン化されておらず、機能ユニットは一旦に命令が "発行" されると実行が完了するまでビジー状態を維持し次の命令は待たされた(対照的に CDC 7600 では機能ユニットにパイプラインが導入された)。ユニットとしては、 浮動小数点乗算器(2組) 浮動小数点除算器 浮動小数点加算器 倍長整数加算 インクリメンタ(2組、メモリへのロード/ストアに使用) バレルシフタ 論理演算器 分岐先アドレス演算器 がある。 命令は、8ワードの「スタック」と呼ばれるCP内部のレジスタの保持される。15ビット命令ならば1ワードに4命令が入るので、最高32個の命令を保持し、実行ユニットの空き状況に応じてその中の1つが逐次実行に移された。このスタックは無条件分岐命令があると内容が消される。無条件分岐は条件分岐よりは速い場合がある(少なくとも、遅くなることはない)。システムのクロックは 10MHz だが、4相クロックが使用されていたので、実質的には 40MHz で動作していたと言える。浮動小数点乗算は3サイクルかかり、除算は約10サイクルである。メモリによる遅延なども考慮した性能は約 1MFLOPS である。ずっと後に出てきた最も性能のよいコンパイラを使うと、FORTRAN のプログラムで約 0.5MFLOPS の性能を平均的に達成できたという。
※この「セントラルプロセッサ」の解説は、「CDC 6600」の解説の一部です。
「セントラルプロセッサ」を含む「CDC 6600」の記事については、「CDC 6600」の概要を参照ください。
- セントラルプロセッサのページへのリンク