


CDC 6600 は、Control Data Corporationが製造した、現在は生産終了している6000 シリーズメインフレーム コンピュータシステムのフラッグシップ機です。[ 8 ] [ 9 ]一般的に最初の成功したスーパー コンピュータと考えられており、業界の以前の記録保持者である IBM 7030 Stretch を 3 倍上回る性能を発揮しました。[ 10 ] [ 11 ]最大3メガFLOPS の性能を持つCDC 6600は、1964 年から 1969 年まで世界最速のコンピュータでしたが、その後継機の CDC 7600 にその地位を譲りました。[ 14 ]
最初の CDC 6600 は 1965 年にリバモアとロスアラモスに納入されました。[ 15 ]これらはすぐにハイエンドの科学計算および数学計算に必須のシステムとなり、クーラント数理科学研究所、CERN、[ 16 ] [ 17 ]ローレンス放射線研究所、[ 18 ]およびその他多くの機関に納入されました。合計で少なくとも 100 台が納入されました。[ 19 ]
CDC 6600は、カリフォルニア州マウンテンビューにあるコンピュータ歴史博物館に展示されている。
CDC の最初の製品は、エンジニアリング リサーチ アソシエイツ(ERA)で設計されたマシンをベースにしており、シーモア クレイはCDC に移籍後、ERA のマシンの改良を依頼されていた。リトル キャラクターとして知られる実験機の後、 1960年にCDCは最初の商用トランジスタ ベース コンピュータの 1 つですが、当時市場で最速のマシンの 1 つです、 CDC 1604をリリースした。経営陣はこれに喜び、ビジネス用途により適した新しいシリーズのマシンを計画した。たとえば、文字処理や記録管理の指示が含まれる予定だった。クレイはそのようなプロジェクトには興味がなく、1604 の 50 倍の速度の新しいマシンを製造することを目標とした。1年と 5 年後の計画に関する詳細なレポートを作成するように求められたとき、彼は 5 年後の目標は「世界最大のコンピュータを製造すること」であり、当時「最大」は「最速」と同義であったこと、そして 1 年後の計画は「その 5 分の 1 を達成すること」であると返信した。[ 21 ]
クレイは中核チームをCDC本社近くの新しいオフィスに移転させ、1604で使用されていた「安価な」トランジスタのより高品質なバージョンを使った実験を開始した。多くの実験の結果、ゲルマニウムベースのトランジスタを1604で使用されていたものより大幅に高速化することは不可能であることが判明した。経営陣が当初望んでいた「ビジネスマシン」、すなわちCDC 3000シリーズは、彼らの限界に近づいていた。そこでクレイは、当時市場に登場したばかりで、スイッチング性能が劇的に向上したフェアチャイルド・セミコンダクターのシリコンベースのトランジスタを採用することが解決策だと判断した。
この時期、CDCはスタートアップ企業から大企業へと成長し、クレイは経営陣の要求がばかげていると感じ、次第に不満を募らせていった。1962年、新型のCDC 3600が量産体制に近づき、経営陣が望む通りの製品を、望むタイミングで提供し始めたことで、事態はさらに緊迫した。クレイは最終的にCDCのCEOであるウィリアム・ノリスに、何らかの変更がなければ会社を去ると告げた。ノリスはクレイを失うにはあまりにも重要な人物だと感じ、クレイに好きな場所に新しい研究所を設立する許可を与えた。
しばらく探した後、クレイは故郷であるウィスコンシン州チペワフォールズに戻ることを決意し、そこで土地を購入して新しい研究所を立ち上げた。
このプロセスによって新機種の設計にかなりの遅延が生じたが、新しい研究所に移ってからは、経営陣の干渉を受けることなく、物事は急速に進展し始めた。この頃には、新しいトランジスタはかなり信頼性が高くなっており、それらを使って作られたモジュールは初回から正常に動作することが多かった。クレイは、システムアーキテクトであり、6600の「隠れた天才」であるジム・ソーントンと共に、6600の形を成し始めた。
CDC 6600は、その寿命期間(1964年から1969年)中に100台以上が販売されました。これらの多くは様々な核兵器関連の研究所に納入され、かなりの数が大学のコンピュータ研究室に導入されました。CDC 6600は、直接数値探索の初期の例として、オイラーのべき乗和予想 を否定するために使用されました。[ 22 ]
クレイはすぐに後継機の開発に着手し、今度は6600の10倍の性能を目標に掲げ、CDC 7600を開発した。後のCDC Cyber 70および170コンピュータは、全体的な設計においてCDC 6600と非常によく似ており、ほぼ完全に下位互換性があった。
6600 は、それまでの記録保持者であったIBM 7030 Stretch の3 倍の速さだったため、IBM は警戒した。当時の CEOトーマス・ワトソン Jr. は、1963 年8 月 28 日に従業員に宛てたメモに次のように書いた 。「先週、CDC [...] は 6600 システムを発表しました。このシステムを開発している研究所には、清掃員を含めて 34 人しかいないと聞いています。そのうち 14 人がエンジニアで、4 人がプログラマーです [...] この控えめな取り組みと、我々の大規模な開発活動を比較すると、なぜ他社に世界で最も強力なコンピュータを提供させることで、業界のリーダーとしての地位を失ってしまったのか理解できません。」クレイの返答は皮肉だった。「 ワトソン氏は自分で答えを出しているようですね。」[ 23 ] [ 24 ]
1950年代と1960年代の典型的なマシンは、単一の中央処理装置(CPU)を使用してシステム全体を駆動していました。[ 25 ]典型的なプログラムは、まずデータをメモリにロードし(多くの場合、事前に作成されたライブラリコードを使用)、それを処理し、次に書き出します。このため、CPUは、入出力と処理を含む、実行を求められる一連の命令をすべて処理するために、かなり複雑である必要がありました。複雑なCPUは、CPUが大きくなることを意味し、それを構成する個々のモジュール間で情報が流れる間に信号遅延が発生します。これらの遅延は、マシンが信号が次のモジュールに到達する時間を確保できるサイクル速度でしか動作できないため、パフォーマンスの上限を決定づけます。さらに、CPUは一般的に、接続されているメインメモリよりも低速で動作しました。たとえば、プロセッサが2つの数値を乗算するのに15サイクルかかる場合、各メモリアクセスには1サイクルまたは2サイクルしかかかりません。これは、メインメモリがアイドル状態になる時間がかなりあることを意味します。Crayは、このアイドル時間の機会を利用して、いくつかの方法でパフォーマンスを改善しました。
CDC 6600は、CPU単体ではなく、10個の12ビット4KiB周辺プロセッサ(PP)でCPUをサポートしていました。各PPは、入出力処理と中央メモリへのデータ送信制御を行う12個の入出力(I/O)チャネルからなる共通プールにアクセスできました。PPは、CPUが演算処理でビジー状態のアイドル時間中にメモリにアクセスするように設計されていました。これにより、中央処理時間を実質的に消費することなく入出力処理を実行でき、CPUを常に稼働状態に保つことができました。
入出力は周辺プロセッサによって処理されるため、CDC 6600は、数学演算と論理演算を可能な限り高速に実行するように設計された簡略化された中央プロセッサ(CP)を採用しました。そのため、配線の長さとそれに伴う信号遅延を削減するために、CPは可能な限り小型化される必要がありました。この結果、マシンの(一般的に)十字型のメインシャーシが採用され、CPUの回路基板が中央付近に配置され、CPU自体も大幅に小型化されました。シリコントランジスタの高速スイッチング速度と相まって、新しいCPUは10MHz ( 100nsサイクルタイム)で動作し、市場に出回っている他のマシンよりも約10倍高速でした。クロック速度が速くなっただけでなく、シンプルなプロセッサはより少ないクロックサイクルで命令を実行しました。例えば、CPUは10サイクルで乗算を完了することができました。
6600のCPは60ビットワードと整数の1の補数表現を使用しており、これは後のCDCマシンが1980年代後半まで使用していたもので、一部のデジタル信号プロセッサを除いて、このアーキテクチャを使用した最後のシステムとなった。[ 26 ]
その後、CDCはCP、PP、チャネルの数と種類に関するオプションを提供するようになった。例えば、CDC 6700には6400 CPと6600 CPという2つの中央プロセッサが搭載されていた。
同時代の他のマシンには操作用の精巧なフロントパネルがあったのに対し、6600には起動パネルしかない。[ 27 ]デュアルCRTシステムコンソールがあるが、これはオペレーティングシステムによって制御され、ハードウェアを直接制御したり表示したりするものではない。
6600マシン全体には約40万個のトランジスタが含まれていた。[ 28 ]
CPUは限られた数の単純な命令しか実行できませんでした。当時の一般的なCPUは複雑な命令セットを持ち、メモリへのアクセスや入出力といった通常の「管理」タスクを処理する命令も含まれていました。クレイはこれらの命令を、これらのタスク専用のより単純なプロセッサに実装することで、CPUの命令セットを大幅に削減しました。これが、後にRISC( Reduced Instruction Set Computer )と呼ばれるようになる設計の最初の例となりました。
CPU、周辺プロセッサ(PP)、I/Oを並列に動作させることで、この設計はマシンのパフォーマンスを大幅に向上させた。通常、複数のプロセッサを搭載したマシンは、はるかに高価になる。6600の設計の鍵は、周辺プロセッサ(PP)として知られるI/Oプロセッサをできるだけシンプルにすることだった。PPは、CPUよりもはるかに低速で動作するシンプルな12ビットCDC 160-Aをベースとしており、専用ハードウェアを介して高速でデータを収集し、バーストとしてメインメモリに送信していた。
10 個の PP は仮想的に実装され、単一の PP 用の CPU ハードウェアのみが存在した。[ 29 ] : pp.4-3 から 4-4この CPU ハードウェアは共有され、10 個の PP状態を表す 10 個の PP レジスタ セット上で動作した (現代のマルチスレッドプロセッサと同様)。PPレジスタ バレルは「回転」し、各 PP レジスタ セットは実際の PP CPU が占有する「スロット」に提示された。共有 CPU は PP の命令の全部または一部を実行し、その後バレルは再び「回転」して次の PP のレジスタ セット (状態) を提示した。命令を完了するには、バレルの複数回の「回転」が必要であった。バレルの完全な「回転」は 1000 ナノ秒 (PP あたり 100 ナノ秒) で発生し、命令の完了には 1 回から 5 回、データ転送命令の場合はそれ以上のバレルの「回転」が必要であった。
6600 CPUの基盤となっているのは、後にRISCシステムと呼ばれることになるもので、プロセッサは比較的単純な命令を実行するように調整されており、メモリへのアクセスは限定的かつ明確に定義されている。他の多くのマシンの設計思想は、複雑な命令を使用することにあった。例えば、メモリからオペランドをフェッチしてレジスタの値に加算する単一の命令などである。
CP の命令は、f、m、i、j、k と指定された 5 つの 3 ビットフィールドに分割された 15 ビット、または 3 ビットの f、m、i、j と 18 ビットの K フィールドへの分割された 30 ビットのいずれかです。関数 (f) と修飾子 (m) は通常オペコードを指定しますが、レジスタ番号が 9 ビットのオペコードの一部となる場合もあります。ほとんどの 15 ビット命令は、2 つのレジスタに対して演算を実行し、結果を 3 番目の (i) レジスタに格納します。ほとんどの 30 ビット命令は、レジスタと定数に対して演算を実行し、結果を 2 番目の (i) レジスタに格納します。
CP には明示的なロード命令とストア命令はなく、ジャンプ命令と SAi 命令のみがメモリを参照します。SAi 命令は、i が 1 ~ 5 のときに中央メモリから関連する X レジスタに読み込み、i が 6 または 7 のときに中央メモリから書き込みます。したがって、CP では、メモリからの加算には 2 つの命令が必要になります。追加の命令のために理論的には遅くなりますが、適切にスケジュールされたコードでは複数の命令を並列処理できるため、このコストは軽減されます。この簡素化により、プログラマはメモリへのアクセスを非常に意識する必要があり、そのため、メモリへのアクセスをできるだけ減らすように意図的にコーディングする必要があります。CDC 6600 CP は 3 アドレス マシンであるため、3 つのオペランドすべてを指定できます。[ 30 ]
CDC 6000 シリーズには、 CDC 6400、CDC 6500、CDC 6600、CDC 6700 の4 つの基本モデルがありました。6000シリーズのモデルの違いは CPU のみで、CPU は 6400 CPU と 6600 CPU の 2 種類ありました。6400 CPU は、個別の機能ユニットではなく、統一された演算ユニットを備えていました。そのため、命令の実行時間をオーバーラップさせることができませんでした。たとえば、6400 CPU では、加算命令が乗算命令の直後に続く場合、乗算命令が終了するまで加算命令を開始できないため、2 つの命令の正味の実行時間は、それぞれの実行時間の合計になります。6600 CPU は、複数の機能ユニットを同時に、つまり「並列」に動作させることができ、命令の実行時間をオーバーラップさせることができました。例えば、6600 CPU は乗算命令の実行開始後、次の CPU サイクルで加算命令の実行を開始できます (もちろん、乗算命令の結果が加算命令のオペランドではないと仮定した場合)。そのため、2 つの命令の正味の実行時間は、乗算命令の (より長い) 実行時間になります。6600 CPU には命令スタック、つまり一種の命令キャッシュも搭載されており、メモリが命令フェッチ要求に応答するのを待つことによって発生する CPU のアイドル時間を減らすことで、CPU のスループット向上に役立ちました。この 2 種類の CPU は命令互換性があったため、どちらかの種類の CPU で実行されるプログラムは、もう一方の種類の CPU でも同じように実行され、6600 CPU ではより高速に実行されました。実際、6000 シリーズのすべてのモデルは完全に相互互換性がありました。 CDC 6400にはCPUが1つ(6400 CPU)、CDC 6500にはCPUが2つ(両方とも6400 CPU)、CDC 6600にはCPUが1つ(6600 CPU)、そしてCDC 6700にはCPUが2つ(6600 CPUと6400 CPUがそれぞれ1つずつ)搭載されていた。
6400、6500、6600シリーズの中央処理装置(CP)とメインメモリは、60ビットのワード長でした。中央処理装置には、汎用60ビットレジスタX0~X7が8個、18ビットアドレスレジスタA0~A7が8個、18ビットインクリメントレジスタB0~B7が8個ありました。B0はハードウェアによって常にゼロに保持されていました。多くのプログラマは、B1を1に設定し、同様に変更不可能なものとして扱うことが便利だと考えていました。
CPには入出力命令はなく、入出力は周辺プロセッサ(下記参照)によって行われました。メモリのロードやストア専用のオペコードは存在せず、これは特定のAレジスタへの割り当ての副次的な効果として発生しました。A1からA5を設定すると、そのアドレスのワードがそれぞれX1からX5にロードされ、A6またはA7を設定すると、X6またはX7からワードがストアされました。A0には副次的な効果はありませんでした。スタントボックスと呼ばれる別のハードウェアロード/ストアユニットが、命令ストリームの動作とは独立して実際のデータ移動を処理し、メモリへのアクセス中に他の操作を完了できるようにしました。メモリへのアクセスには、最良の場合でも8サイクルが必要でした。
6600 CPには10個の並列機能ユニットが搭載されており、複数の命令を同時に処理することが可能でした。今日ではスーパースカラプロセッサ設計として知られていますが、当時としては画期的なものでした。現代のCPU設計のほとんどとは異なり、機能ユニットはパイプライン化されていませんでした。機能ユニットは命令が「発行」されるとビジー状態になり、その命令の実行に必要な時間の間、ビジー状態のままでした。(対照的に、CDC 7600は機能ユニットにパイプライン処理を導入しました。)最良の場合、100ナノ秒のクロックサイクルごとに機能ユニットに命令を発行することができました。システムはメモリから命令を可能な限り高速に(通常は命令の実行完了よりも高速に)読み込み、デコードして、処理のためにユニットに送りました。ユニットは以下のとおりです。
このアーキテクチャでは浮動小数点演算が最重要視されており、CDC 6600(および同種の機種)は、60ビット浮動小数点乗算をプログラム分岐と同等の時間で実行できるという点で、事実上唯一無二の存在である。ミッチ・アルサップによるジェームズ・ソーントンの著書『コンピュータの設計』の最近の分析によると、6600の浮動小数点演算ユニットは2段パイプライン設計であることが明らかになった。
60 ビット数の固定小数点加算と減算は、ロング加算ユニットで処理され、負の数は1 の補数を使用して処理されました。固定小数点乗算は、浮動小数点乗算ユニットで特殊なケースとして実行されました。指数がゼロの場合、FP ユニットは 48 ビットの単精度浮動小数点乗算を実行し、上位指数部をクリアして、48 ビットの整数結果を得ました。整数除算は、マクロによって実行され、浮動小数点との間で変換されました。[ 31 ]
以前に実行された命令は、「スタック」と呼ばれる8ワードのキャッシュに保存された。スタック内ジャンプはメモリフェッチが不要なため、スタック外ジャンプよりも高速だった。スタックは無条件ジャンプ命令によってクリアされるため、ループの最後にある無条件ジャンプは、慣例として常に成功する条件付きジャンプとして記述された。
このシステムは10MHzのクロックと4相信号を使用していた。浮動小数点乗算には10サイクル、除算には29サイクルかかり、メモリ遅延などの問題を考慮すると、全体のパフォーマンスは約3MFLOPSであった。マシンの歴史の末期には、入手可能な最良のコンパイラを使用しても、FORTRANプログラムは約0.5MFLOPSの性能を維持できると予想された。
ユーザープログラムは、メインメモリの連続した領域のみを使用するように制限されています。実行中のプログラムがアクセスできるメモリ領域は、ユーザープログラムからはアクセスできないRA(相対アドレス)レジスタとFL (フィールド長)レジスタによって制御されます。ユーザープログラムがアドレスaにある中央メモリのワードを読み書きしようとすると、プロセッサはまずaが0からFL-1の間にあることを確認します。その範囲内であれば、プロセッサはアドレスRA+aにある中央メモリのワードにアクセスします。このプロセスはベース境界再配置と呼ばれ、各ユーザープログラムは、アドレス0から始まる長さFLの連続したブロックワードとしてコアメモリを認識します。実際には、プログラムは物理メモリ内のどこにでも存在できます。この手法を用いることで、RAレジスタがメモリ内の位置を反映している限り、各ユーザープログラムはオペレーティングシステムによってメインメモリ内で移動(「再配置」)されます。許可された範囲外のメモリ(つまり、FL以上のアドレス)にアクセスしようとするユーザープログラムは割り込みを発生させ、オペレーティングシステムによって終了します。このような場合、オペレーティングシステムはコアダンプを作成し、プログラムのメモリとレジスタの内容をファイルに記録します。これにより、プログラム開発者は何が起こったのかを知ることができます。仮想メモリシステムとの違いに注意してください。仮想メモリシステムの場合、プロセスのアドレス指定可能な領域全体がコアメモリ内に存在し、連続している必要があり、そのサイズは実際のメモリ容量を超えてはなりません。
CDC 6000シリーズの最初の7台を除くすべての機種は、オプションの拡張コアストレージ(ECS)システムを搭載することができました。ECSは、中央記憶装置で使用されていたものとは異なる種類のコアメモリで構成されていました。このメモリは速度は劣りましたが、価格が安かったため、容量を大幅に増やすことができました。主な理由は、ECSメモリはコアあたり2本のワイヤで配線されていたためです(中央記憶装置は5本)。非常に広い転送幅で動作するため、シーケンシャル転送速度は小型コアメモリと同じでした。6000 CPUは、ユーザープログラム(またはオペレーティングシステム)とECSユニット間でブロックメモリ転送を直接実行できました。広いデータパスが使用されていたため、非常に高速な操作でした。メモリの境界は、オペレーティングシステムによって管理されるRA/FLメカニズムによって、中央記憶装置と同様の方法で維持されました。ECSは、中央記憶装置には大きすぎるユーザーデータ配列の格納、頻繁に使用されるファイルの保持、スワッピング、さらにはマルチメインフレーム複合システムにおける通信パスとしてなど、さまざまな用途に使用できました。
他の設計ではCPUに割り当てられていた「ハウスキーピング」タスクを処理するために、クレイは、以前のコンピュータであるCDC 160-Aを部分的にベースとした10個のプロセッサを追加しました。これらのマシンは周辺プロセッサ(PP)と呼ばれ、それ自体が完全なコンピュータでしたが、I/Oタスクの実行とオペレーティングシステムの実行に調整されていました。(オペレーティングシステムの大部分はPPで実行され、中央プロセッサのパワーの大部分はユーザープログラムに利用可能でした。)I/OチャネルにアクセスできたのはPPだけでした。1つのPP(PP0)は、メインCPUで実行されているプログラムの制御を含め、マシンの全体的な制御を担当し、他のPPはさまざまなI/Oタスクに特化していました。PP9はシステムコンソールに特化していました。CPプログラムがオペレーティングシステム機能を実行する必要があるときは、PP0によって監視されている既知の場所(参照アドレス+1)に要求を送信します[ 32 ]。必要に応じて、PP0は別のPPを割り当てて必要なコードをロードし、要求を処理します。その後、PPはRA+1をクリアして、タスクが完了したことをCPプログラムに通知します。
PP0がマシンの制御において果たす独特な役割は、潜在的な単一障害点となり得るものでした。なぜなら、PP0に不具合が生じると、他の9つのPPとCPUが正常に動作していても、マシン全体が停止してしまう可能性があったからです。クレイ社は、後継機種である7600の設計においてこの問題を解決しました。7600では、どのPPでもコントローラとして機能することができ、CPUは任意のPPをコントローラに再割り当てすることが可能になりました。
各PPには、4096個の12ビットワードからなる独自のメモリが搭載されていました。このメモリはI/Oバッファリングとプログラム格納の両方に使用されましたが、実行ユニットはバレル・スロットと呼ばれる構成で10個のPPによって共有されていました。つまり、実行ユニット(「スロット」)は、最初のPPから1命令サイクル、次に2番目のPPから1命令サイクル、といった具合に、ラウンドロビン方式で実行されました。これは、コスト削減のためと、CPメモリへのアクセスに10PPクロックサイクルが必要だったためでした。PPがCPメモリにアクセスすると、データはPPが次にスロット時間を受け取ったときに利用可能になります。
従来の命令セットに加えて、PPには中央処理装置との通信を目的とした命令がいくつか備わっている。[ 33 ]: pp.4-24–4-27
CRD d- PPs Aレジスタで指定されたアドレスの中央メモリから60ビットワード1つを、アドレスdから始まる連続する5つのPPワードに転送します。CRM d,m- CRD と同様ですが、以前に位置dに格納されていた長さの単語のブロックを、 PP アドレスmから始まる PP メモリに転送します。CWD d- 位置dから始まる 5 つの連続する PP ワードを組み立て、レジスタAで指定された中央メモリ位置に転送します。CWM d,m- PPメモリアドレスmから始まるブロックを中央メモリに転送します。中央メモリのアドレスはレジスタAに、長さは実行前に位置dに格納されていました。RPN- 中央処理装置のプログラムアドレスレジスタの内容をPPのAレジスタに転送します。EXN- Exchange JumpはAレジスタからアドレスを送信し、指定されたアドレスを使用してExchange Jumpを実行するようにプロセッサに指示します。CP Exchange Jumpはプロセッサを割り込み、指定された場所からレジスタをロードし、以前の内容を同じ場所に格納します。これによりタスクスイッチが実行されます。[ 33 ]: pp.3-9–3-10中央処理装置は60ビットワード、周辺処理装置は12ビットワードを使用します。CDCは周辺処理装置で使用される12ビットの単位を「バイト」と呼んでいました。文字は6ビット、中央処理装置の命令は15ビットまたは30ビットで、符号付き18ビットのアドレスフィールドを持ちます。後者の場合、中央記憶装置の128Kワード(現代の8ビットバイトに換算すると1MB弱 )を直接アドレス指定できます。アドレスレジスタが符号付きであるため、個々のプログラムは128Kワードに制限されます。 (後のCDC 6000互換機では、予算が許せば256Kワード以上の中央メモリを搭載できたが、個々のユーザープログラムは依然として128Kワードの中央メモリに制限されていた。)中央プロセッサの命令は、ジャンプ文またはサブルーチン戻りジャンプ命令のターゲットになるとワード境界から始まるため、ワードの最後の15、30、または45ビットを埋めるために、何もしない命令が必要になることがある。熟練したアセンブラプログラマは、これらの何もしない領域を、プログラムの後半で必要となる雑多な命令で埋めることで、プログラムを微調整することができた。
CDC 表示コードと呼ばれるエンコーディングの 6 ビット文字は、1ワードに最大10文字を格納するために使用できました。64文字の文字セットが許可されており、これはすべての大文字、数字、および一部の句読点に十分です。FORTRAN を記述したり、財務または科学レポートを印刷したりするには確かに十分でした。実際には、CDC 表示コードの文字セットには 64 文字と 63 文字の 2 つのバリエーションが使用されていました。64文字セットには、単語の最後の文字である場合に ":" (コロン) 文字が無視される (ゼロ埋めとして解釈される) という欠点がありました。6 /12 表示コードと呼ばれる補完的なバリアントも、古いソフトウェアとある程度互換性のある方法でASCII文字セットを完全に使用できるようにするために、 KronosおよびNOSタイムシェアリング システムで使用されました。 [ 37 ]
バイトアドレス指定命令が全くなかったため、文字をワードにパックしてシフトするコードを書く必要がありました。ワードのサイズが非常に大きく、メモリ容量が比較的小さかったため、プログラマーはビットレベルでデータをワードにパックすることでメモリを節約することがよくありました。
ワードサイズが大きく、1ワードあたり10文字であるため、ワード分の文字を一度に処理する方が、アンパック/処理/再パックを繰り返すよりも高速な場合が多かった。例えば、CDC COBOLコンパイラは、この手法を用いて10進数フィールドを処理するのに非常に優れていた。こうした手法は、現在ではAVXなどの最新プロセッサのベクトル命令で一般的に用いられている。

このマシンはプラス記号型のキャビネットに収められており、4本の腕のそれぞれ外側18インチ(46cm )の部分にポンプと熱交換器が配置されていた。冷却は、マシン内部を循環するフロンガスと外部の冷水供給源との間で熱交換を行うことで行われた。各腕には、厚さ約8インチ(20cm )のシャーシが4台収容でき、シャーシは中央付近で蝶番で固定され、本のように少し開くようになっていた。「プラス」の交点には、シャーシ同士を接続するケーブルが張り巡らされていた。シャーシには、1(10個のPPUとそのメモリ、および12個の比較的最小限のI/Oチャネルを含む)から16までの番号が付けられていた。CPUのメインメモリは、複数のシャーシに分散されていた。メインメモリが64Kワードしかないシステムでは、「プラス」の腕の1つが省略されていた。
機械のロジックは、約2.5インチ (64 mm)四方、厚さ約1インチ (2.5 cm)のモジュールにパッケージ化されていた。各モジュールは、片方の端にコネクタ (30 ピン、15 ピンの縦 2 列) があり、反対側の端に 6 つのテスト ポイントがあった。モジュールは、熱を逃がすために 2 枚のアルミ製冷却板の間に挟まれていた。モジュールは 2 枚の平行なプリント基板で構成され、部品は一方の基板上、または 2 枚の基板の間に実装されていた。これにより、非常に高密度なパッケージが実現し、一般的に修理は不可能であったが、優れた放熱特性が得られた。これはコードウッド構造として知られていた。
6600のオペレーティングシステムのサポートには、納期遅延という問題点があった 。当初、これらのマシンはCOS(Chippewa Operating System )と呼ばれる非常にシンプルなジョブ制御システムで動作していたが、これは出荷前にシステムをテストするために、以前のCDC 3000オペレーティングシステムをベースに急遽「寄せ集め」で作られたものだった。しかし、これらのマシンは、ロサンゼルスの同社のシステムサイエンス部門で開発されていたSIPROS(Simultaneous Processing Operating System)と呼ばれるはるかに強力なシステムを搭載して出荷される予定だった。顧客はSIPROSの機能一覧に感銘を受け、多くの顧客がSIPROSを納入契約に盛り込んだ。
SIPROSは結局、大失敗に終わった。開発スケジュールは遅延し続け、CDCは納期遅延によるペナルティで多額の損失を被った。出荷準備が整ったマシンが数ヶ月間も待たされた後、プロジェクトは最終的に中止された。COSの開発に携わっていたプログラマーたちはSIPROSにほとんど期待を抱いておらず、COSの改良作業を続けていた。
オペレーティングシステムの開発はその後、2つの陣営に分かれた。CDCが承認したCOSの進化は、カリフォルニア州サニーベールのソフトウェア開発研究所で行われた。多くの顧客は最終的に、当時SCOPE (Supervisory Control Of Program Execution)として知られていたこのソフトウェアを搭載したシステムを受け取った。SCOPEバージョン1は、基本的にCOSを逆アセンブルしたものであった。SCOPEバージョン2には新しいデバイスとファイルシステムのサポートが追加され、SCOPEバージョン3には永続ファイルサポート、EI/200リモートバッチサポート、およびINTERCOMタイムシェアリングサポートが追加された。SCOPEは常に信頼性と保守性に大きな問題を抱えていた。
COSの地下開発は、ミネソタ州アーデンヒルズの組立工場で行われた。MACE ([Greg] Mansfield And [Dave] Cahlander Executive)は、主に一人のプログラマーが、機械が利用可能な勤務時間外に開発した。その機能セットは基本的にCOSおよびSCOPE 1と同じだった。以前のCOSファイルシステムはそのまま引き継いでいたが、コードのモジュール性を大幅に向上させることで、システムの信頼性と新しいストレージデバイスへの適応性を高めた。MACEは公式製品として発売されることはなかったが、多くの顧客がCDCから入手することができた。
非公式のMACEソフトウェアは、後に公式のSCOPE製品ではなく、次期CDCオペレーティングシステムであるKronos (ギリシャ神話の時間の神にちなんで名付けられた)の基盤として採用された。採用の主なマーケティング上の理由は、TELEXタイムシェアリング機能とBATCHIOリモートバッチ機能の開発であった。Kronosは、永続ファイル機能を追加したCOS/SCOPE 1ファイルシステムを引き続き使用した。
SCOPEとKronosのオペレーティングシステム製品を統合しようとする試みから、 NOS(Network Operating System)が誕生した。NOSは、CDCが全マシン向けに開発した唯一のオペレーティングシステムとなることを意図しており、CDCはこのことを強く宣伝していた。多くのSCOPEユーザーは依然としてSCOPEアーキテクチャにソフトウェア依存していたため、CDCは単にNOS/BE(Batch Environment)と名称を変更し、誰もがNOSを使用していると主張することができた。実際には、Kronosのコードベースを修正してSCOPEの機能を追加する方が、その逆よりもはるかに容易だった。
組立工場環境では、顧客向けではない他のオペレーティングシステムも開発されていました。これには、ハードウェアテスト用のエンジニアリングツールSMMや、ソフトウェアのスモークテスト用のKALEIDOSCOPEなどが含まれます。CDCフィールドエンジニアがテスト中によく使用していたもう1つのツールはMALET(Maintenance Application Language for Equipment Testing)で、エンジニアによる修理や保守後にコンポーネントやデバイスのストレステストに使用されていました。テスト条件では、ハードディスクパックや磁気テープが使用されることが多く、エラーがMALETとエンジニアによって検出されるかどうかを確認するために、意図的にエラーが付けられていました。
CDCは、 CDC 6000シリーズ( 6600を含む)とCDC 3000シリーズの両方にSCOPEとCOMPASSという名称を使用していた。
CDC 7600 は当初、既存の 6000 シリーズ マシンとの完全な互換性も持つように設計されていました。当初は CDC 6800 という名称で開発が始まりました。しかし、設計段階で、既存の 6000 シリーズ マシンとの完全な互換性を維持すると、性能向上の度合いが制限されることが判明し、互換性よりも性能を優先することにしました。CDC 7600 の CPU は基本的に 6400 および 6600 CPU と命令セットが互換性があり、高水準言語のソース コード レベルでのコードの移植性は確保されていましたが、CDC 7600 のハードウェア、特に周辺処理ユニット (PPU) はかなり異なっており、CDC 7600 には別のオペレーティングシステムが必要でした。これはある意味幸運な結果となった。なぜなら、設計者たちは6000シリーズの設計上のいくつかの特徴、例えばCPUを含むコンピュータシステム全体の動作制御を周辺プロセッサ(PP)、特に最初のPP(PP0と呼ばれる)に完全に依存していた点などを改善することができたからである。6600のCPUとは異なり、CDC 7600のCPUは、すべてのレジスタの内容をコアメモリと交換する中央交換ジャンプ(XJ)命令によって、自身の動作を制御することができた。実際、6000シリーズのマシンにはこの機能が後から追加された。
{{cite web}}: CS1 maint: タイトルとしてアーカイブされたコピー (リンク)は40万個のトランジスタと100マイル(約160キロメートル)以上の配線を備えていた。– 写真付き概要