データゼネラルNova
データゼネラル Nova (ノヴァ) は、米国のデータゼネラル社からリリースされた一連の16ビット ミニコンピューターのシリーズである。 Novaファミリは1970年代に非常に人気があり、最終的には数万台の個体が販売された。
最初のモデルは、単に「Nova」として知られ、1969年にリリースされた。 Novaは単一のラックマウントケースに納められ、ほとんどの単純なタスクを処理するのに十分な計算能力を備えていた。 Novaは世界中の科学研究所で人気を博した。 翌年には、約4倍の速度で動作する SuperNOVA が発売された。
集積回路(または「チップ」)設計が急速な進歩していた時期に発売されたこの製品ラインは、その後5年間に何度かのアップグレードを経て、800 と 1200 、Nova 2 、Nova 3 、そして最終的には Nova 4 を発売した。 1チップ実装の microNOVA も1977年に発売されたが、市場が新しいマイクロプロセッサ設計に移行したため、広く使われることはなかった。 フェアチャイルドセミコンダクターも、1977年にNovaのマイクロプロセッサ版であるフェアチャイルド9440を発表したが、これも市場での使用は限定的であった。
Novaシリーズは データゼネラル Eclipse によって継承され、これはほとんどの点で似ていたのだが、仮想メモリのサポートと最新のオペレーティングシステムに必要なその他の機能が追加された。 Eclipse の32ビットアップグレードにより、1980年代の Eclipse MVシリーズ が誕生した。
エドソン・デ・カストロ (英語版)は、先駆的なディジタル・イクイップメント・コーポレーション (DEC) の PDP-8のプロダクトマネージャで、これは一般的に最初の真のミニコンピュータであると考えられている12ビットコンピュータであった。 彼はまた、個々のトランジスタの代わりに初期の集積回路を使用した、アップグレードされた PDP-8/I の設計を主導した。
PDP-8/I の設計プロセスで、デ・カストロは、組み立て可能な基板の複雑さが急速に進歩している回路基板メーカーを訪問していた。 デ・カストロは、8/Iは、1年前には不可能だったろう大型基板への完全自動組み立てで生産できると結論付けた。 DEC社内の人たちは、以前のマシンで使用されていたより小さな基板に慣れてしまい、1枚の基板上に多くの部品がある場合の問題の追跡を心配していた。これは、大きな基板を使用し、故障率が高かったPDP-6の問題に対する反動であったと考えられる。PDP-10は、本質的にPDP-6を再設計したもので、「フリップチップ」カードを使用している。 8/Iについては、密度をわずかに向上させるために新しい「フリップチップ」パッケージを使用して、より小さな基板を使用することに決定した。
PDP-8が開発されていた時期には、1967年に ASCII が導入され、大幅に更新されたことで、それまでのほとんどの設計のように6ビットの倍数ではなく、8ビットの倍数の語長を持つ新世代の設計が登場した。これにより、現在のDECの12ビットや18ビットのラインナップではなく、16ビットの語長で動作するミッドレンジのデザインが設計されるようになった。デ・カストロは、15インチの正方形の基板1枚に16ビットのミニコンピューターCPUを搭載することで、PDP-8の改良が可能であると確信していた。
1967年、デ・カストロは、「PDP-X」として知られる新しい設計作業を開始し。いくつかの先進的な機能が盛り込まれた。これらの中には、8ビット、16ビット、および32ビットのプラットフォームを構築するために使用できる単一の基本設計が含まれていた。 これは、いくつかの詳細なアーキテクチャ・ドキュメントを作成するところまで進んだ。 ケン・オルセンは、12ビットのPDP-8や18ビットのPDP-9に比べて十分な利点が得られないと感じ、このプロジェクトを支持しなかった。結局、このプロジェクトは1968年の春に中止された。
PDP-Xがキャンセルされたことで、デ・カストロは自分でシステムを作るためにDECを辞めることを検討することになった。彼だけではなかった。 1967年末、志を同じくする技術者たちのグループが、そのようなマシンを検討するために結成された。このグループには、事業部長のパット・グリーン、ハードウェア技術者のリチャード・ソッジ、ソフトウェア技術者のヘンリー・ブルクハートII世が含まれていた。 PDP-Xとは対照的に、この新しい取り組みは、迅速に市場に投入できる単一のマシンに焦点を当てたもので、デ・カストロはPDP-Xのコンセプトは小規模なベンチャー企業には野心的すぎると感じていた。
DECの仲間と話し合った結果、当初の構想では8ビット機の方がコストがかからないということになっていた。 この頃、DECとの接点で知り合ったフェアチャイルドセミコンダクターの営業マン、ハーバート・リッチマンに話を聞くようになった。 リッチマンは、機械の内部語長は外部表示と同じである必要はないと指摘した。たとえば、4ビット算術論理演算ユニット (ALU)を使用する16ビット機を使用できる。これは、当時フェアチャイルドが74174という形で発表していた最新のICで安価に実装することができた。
このアプローチにより、メインロジックの複雑さとコストが大幅に削減され、Novaの低販売コストを実現した。 この新しい設計では、1980年代のRISCデザインに再登場するシンプルなロードストアアーキテクチャが採用された。フリップフロップの複雑さがチップに実装されるにつれて急激に減少していたため、同様の低価格製品に見られる単一レジスタではなく、4つの汎用アキュムレータを追加することで、ロード/ストア設計のアドレッシングモードの不足を補った。
8/I のオリジナルのパッケージコンセプトに沿って、Novaは2枚の15 のプリント回路基板をベースにしている。1つはCPU用で、もう1つはさまざまなサポートシステム用である。 これらの基板は、プリント回路のバックプレーンを使用して接続できるように設計されており、手作業での配線は最小限に抑えられ、すべての基板を自動で構築することができた。 これにより、バックプレーンで一緒に配線しなければならない多くの小さな基板で構成されていた 8/I に比べて、コストを大幅に削減することができた。 また、基板の大型化により、Novaはより信頼性が高くなり、産業用や研究室の環境で特に魅力的な製品となった。 フェアチャイルド社は、システム全体で使用される中規模集積回路 (MSI)チップを提供した。
1967年後半、リッチマンはニューヨークに拠点を置く弁護士のフレッド・アドラーにグループを紹介し、アドラーはシードキャピタルのため様々な資金調達先の聞き込みをはじめた。 1968年までに、アドラーはボストン地域のベンチャーキャピタルのコンソーシアムと大規模な資金調達の契約を結び、彼らは最初に40万ドルの投資を行い、生産を開始するために40万ドルを提供することに同意した。 デ・カストロ、ブルクハート、ソッジはDECを辞め、1968年4月15日にデータジェネラル (DG)を設立した。グリーンは、この事業はリスクが高すぎると考えて参加せず、リッチマンはその年の後半に製品が稼働するまで参加しなかった。
最初のシステムの開発には約9カ月を要し、最初の販売活動はその11月に開始された。 秋のコンピュータ連合会議がその年の12月まで延期されていたため、彼らは少し幸運にも モスコーニ・センターに開発機を持ち込むことができ、そこで「Spacewar!」のバージョンを実行した。 DGは1969年にNovaを基本価格3,995ドルで正式に発売し、「世界最高の小型コンピューター」と宣伝した。  基本モデルは箱から出してもあまり役に立たず、コアメモリの形でRAMを追加すると、価格は通常7,995ドルになった。
最初の販売先はテキサス州の大学で、チームが手作りした機械が2月に出荷された。しかし、このときは航空業界のストライキのまっただ中で、機械は一向にとどかなかった。ストライキが終わった後に2台目を送ったが、5月になってようやくオリジナルのものが納入された。
このシステムは当初から成功しており、半年後には100台、15カ月後には500台が販売された。 新しいバージョンが登場すれるにつれて販売は加速し、1975年には同社の年間売上高が1億ドルに達した。
ケン・オルセンは、DGが失敗すると公言していたが、Novaのリリースでそれが起こらないことは明らかになった。この時までには、他の多くの企業も16ビット機の導入を検討していた。オルセンは、12ビットだけでなく18ビットのラインにも脅威を与えると判断し、新たな16ビットの設計作業を開始した。  これは1970年にPDP-11として登場したもので、PDP-Xと同様にNovaとは異なる、より複雑な設計であった。この2つの設計は、市場で激しい競争を繰り広げた。
DECからの新システムの噂は、Novaが出荷を開始して間もなくDGに届いた。 1970年の春、DGは新しい設計者ラリー・セリグマンを雇い、製造中のあらゆる機械を飛躍させた。 Novaの設計以降、2つの大きな変更が行われた。 1つは、ICの改良と高密度化が進んでいたこと、もう1つは、 Intelが半導体ベースのメモリを積極的にアピールしていたことで、1チップで1,000ビットでコアよりもはるかに高速に動作することを約束していたことである。
セリグマンの新しいデザインは、これらの改善点の両方を利用した。 まず、新しいICによりALUを完全な16ビット幅に拡張し、1サイクルで操作を実行できるようにしたことで、新しいデザインはオリジナルの4倍の計算速度を実現した。 さらに、新しい小型コアメモリが使用され、サイクルタイムがオリジナルの1,200ナノ秒から800ナノ秒に改善され、さらに1/3のゲインを得ることができた。 コアをリード・オンリー・メモリ (ROM) に置き換えることで、性能をさらに向上させることができた。 コアの読み取り/書き込みサイクルがないため、300ナノ秒でアクセスして性能を劇的に向上させることができた。
その結果、1970年に発売されたのが SuperNOVA である。初期型はまだコアを使用していたが、全体の設計は、より高速な半導体メモリが利用できるようになり、プラットフォームはそれをフルに活用できるようになることを前提にしていた。これは、同年後半に半導体(SC)メモリを搭載した SuperNOVA SC として発表された。メモリが大幅に高性能化されたことで、メモリと同期していたCPUがさらに高速化され、サイクルタイム300ナノ秒(3.3MHz)で動作するようになった。これにより、長年にわたり入手可能なミニコンピュータの中では最速のものとなった。  しかし、この新しいメモリも非常に高価で、熱を帯びるため、広く使われることはなかった。
セリグマンが SuperNOVA に取り組んでいたとき、会社はロン・グルナーから「あなたの製品について読んだし、広告も読んだし、あなたのために働くことになった」と書かれた手紙を受け取った。 そして、「一週間後にあなたのオフィスに来て、そのことについて話すつもりである。」と書かれていた。 彼はその場で採用された。
この時点までに、同社は市場の変化を利用するために低価格プラットフォームの新バージョンが必要だと判断し、低価格システムから高性能システムに移行する必要があれば、顧客が現場で1台の機械を交換できるという新しいコンセプトが生まれた。グルナーは低コストの機械を担当し、セリグマンはそれに見合った高性能バージョンを設計した。
グルナーの低価格モデルは、1970年に Nova 1200 として発売され、1200 はオリジナルのNovaの1,200ナノ秒コアメモリの使用を指している。 また、オリジナルの4ビットALUを使用しており、本質的には再パッケージされたNovaであった。 セリグマンの再パッケージされた SuperNOVA は、Nova 800として1971年にリリースされ、その結果、番号が小さいモデルの方が高性能であるという、やや紛らわしいネーミングになった。 どちらのモデルも様々な筐体で提供され、1200 は7スロット、1210 は4スロット、1220 は14スロットである。
この頃になると、PDP-11がついに出荷された。 PDP-11は、Novaのように意図的に単純化された命令セットよりも、はるかに豊富な命令セットのアーキテクチャを提供していた。 ICの設計、特に価格性能比の向上は、当初の単純化された命令の価値を低下させていた。セリグマンは、Novaと互換性がありながらも、より豊かな環境を求める人のために、新しい機械の設計を担当することになった。このコンセプトは、 データゼネラル Eclipse シリーズとして出荷された。Eclipse は、科学計算またはデータ処理のワークロードに合わせて命令セットを調整するために追加の回路を追加する機能を提供した。 Eclipseは、市場のハイエンドで PDP-11と競争することに成功した。
同じ頃、DECから新しい32ビット機の噂が流れ始めた。 同じような製品が必要だと判断したDGは、グルナー氏にファウンテンヘッド・プロジェクトの責任者を任せることにした。 プロジェクトの範囲を考えると、彼らはすべての作業をオフサイトで処理することに合意し、グルーナーはノースカロライナ州 のリサーチトライアングルパークの場所を選択した。 この設計は非常に複雑なものとなり 、最終的には数年後に中止となった。
これらの努力が行われている間、Novaラインの作業は続けられた。
1973年に初めて提供された 840 は、最大17ビットのアドレスを可能にする新しいページングメモリシステムを搭載していた。 インデックスがベースアドレスをオフセットして128 k語の大容量メモリを搭載した。 実際にこれだけのメモリを搭載するには、かなりのスペースが必要で、840 は14スロットの大型筐体に収められて出荷された。
次のバージョンは Nova 2 で、最初のバージョンは1973年に出荷された。 Nova 2は、チップ密度を上げることでCPUを小型化したため、基本的には初期の機械を簡略化したものであった。 SuperNOVA が15x15インチの基板を3枚使ってCPUとメモリを実装していたのに対し、Nova 2はこれらすべてを1つの基板に収めた。 ROMはブートコードを格納するために使用され、「プログラムロード」スイッチを押すとコアにコピーされた。 4 ("2/4")、7、10 ("2/10") スロットを備えたバージョンがあった。
1975年のNova 3では、内蔵スタックへのアクセスを制御するために2つのレジスタが追加された。 また、プロセッサは TTLコンポーネントを使用して再実装され、システムの性能がさらに向上した。 Nova 3には、4スロット(Nova 3/4)と12スロット(Nova 3/12)があった。
データゼネラルは当初、Nova 3をそのラインの最後の製品とし、Nova を新しい Eclipse 機に置き換えることを計画していた。 しかし、継続的な需要があったため、今回は4つの AMD Am2901 ビットスライス ALU に基づく Nova 4 機が開発された。 この機械は最初から Nova 4 と Eclipse S/140 の両方に対応するように設計されており、それぞれ異なるマイクロコードが使用されていた。 浮動小数点コプロセッサも利用可能で、別のスロットを占有していた。 追加オプションとしてメモリマッピングがあり、バンクスイッチングを使用して最大128 k語のメモリにアクセスできるようになっていた。 初期の機械とは異なり、Nova 4 にはフロントパネルがなく、必要に応じてターミナルを使用してコンソールをエミュレートしていた。
Nova 4には、Nova 4/C、Nova 4/S、Nova 4/Xの3つのバージョンがあった。 Nova 4/Cは、シングルボード実装で、すべてのメモリ(16k語または32k語)を搭載していた。 Nova 4/Sと4/Xは別々のメモリボードを使用していた。 Nova 4/Xでは、オンボードメモリ管理ユニット (MMU)が有効になっており、最大128 k語のメモリを使用することができる(MMUはNova 4/Sにも搭載されていたが、ファームウェアでは無効になっていた)。 4/Sと4/Xには、必要とされる前にメモリから最大2つの命令をフェッチすることで性能を向上させる「プリフェッチャ」が搭載されていた。
データゼネラルは、Novaプロセッサの1チップ実装を microNOVA として一連の製品を生産した。 バスアーキテクチャの変更により速度が大幅に制限され、オリジナルのNovaの約半分の速度になってしまった。 「mN601」プロセッサを搭載したオリジナルの microNOVA は1977年に出荷された。 その後、1979年にはmicroNOVA MP/100 が発売され、CPUを1つのVLSIチップ、mN602に縮小した。 より大きなバージョンも microNOVA MP/200 として提供され、同じ年に出荷された。
microNOVAはその後、PCスタイルのケースに2つのフロッピーディスクを備えた Enterprise として再パッケージされた。 Enterprise は1981年に出荷され、 RDOSを実行していたが、同じ年に IBM PC が導入されたため、他のほとんどの機械ははレーダーの下から姿を消してしまった。
Nova は ゼロックス Alto (1973) や Apple I (1976)  の設計に影響を与え、そのアーキテクチャーはComputervision Incの CGP(Computervision Graphics Processor)シリーズの基礎となった。 その外観デザインは、 MITS Altair (1975)マイクロコンピューターのフロントパネルに直接インスピレーションを与えたと報告されている。
データゼネラルは、初代Novaの成功を受けて、一連のより高速な設計ラインで追従した。 その後、上位互換性のある命令セットを拡張した Eclipse ファミリーが導入され、MVシリーズはさらに Eclipse を32ビットアーキテクチャに拡張して DEC VAX に対向した。 MVシリーズの開発は、トレイシー・キダーの人気の高い1981年の著書「超マシン誕生」に記録されている。 データゼネラル自体は、後にIntelプロセッサベースのサーバーおよびストレージアレイのベンダーへと発展し、最終的にはEMCに買収された。
2004年現在でも、航空管制を含む世界中のさまざまなアプリケーションで16ビットの Nova と Eclipse が稼働している  。世界中には、レガシーな16ビットデータゼネラルシステムを復元して保存する、多様で熱心な人々のグループが存在する  。
PDP-8とは異なり、Novaはロードストアアーキテクチャであった。 4つの16ビットアキュムレータレジスタを持ち、そのうち2つ(2と3)はインデックスレジスタとして使用できる。 15ビットのプログラム・カウンタと1ビットのキャリー・レジスタがある。 PDP-8と同様に、カレント+ゼロページのアドレス指定が中心となっていた。 スタックレジスタはなかったが、後のEclipseの設計では、この機能のために専用のハードウェアメモリアドレスが使用されるようになった。
Novaの初期のモデルは、1個の 74181 ビットスライス ALUを使用して、4ビットパケットで数値をシリアルに処理していた。 導入から1年後、この設計は改良され、4つの74181を使用した16ビット並列演算ユニットを含むように改良され、この設計は SuperNova と呼ばれるようになった。 システムの将来バージョンでは、スタックユニットとハードウェア乗算/除算が追加された。
Nova 4 / Eclipse S/140 は、4つの AMD 2901 ビットスライスALUをベースにしており、 リード・オンリー・メモリー (ROM) に マイクロコードを搭載し、磁気コアメモリを搭載せず、DRAMメインメモリのみで設計された最初のNovaであった。
最初のモデルは、8K語の磁気コアメモリがオプションとして用意されていたが、これは実質的に誰もが購入しなければならなもので、システムコストは最大7,995ドルになった。
このコアメモリ基板は、4つのバンクを4つのグループに分けて平面的に構成されており、各バンクは64 x 64マトリクスで2セットのコアが搭載されていた。したがって、64 x 64 = 4096ビット/セット、x 2セットで8,192ビット、x 4バンクで32,768ビット、x 4グループで合計131,072ビットとなり、これを16ビットのマシン語サイズで割ると8,192ワードのメモリを与える。
この8K語メモリ基板のコアは、中央に配置された幅5.25インチ、高さ6.125インチの「ボード・オン・ア・ボード」を占め、保護板で覆われていた。 このコアは、必要なサポートドライバーの読み取り/書き込み/書き換え回路に囲まれていた。 すべてのコアと対応するサポート電子機器は、単一の標準的な15 x 15  の基板に収まっている。このようなコアRAMは、1つの外部拡張ボックスで最大32Kまでサポートできる。 当時、 半導体 ROMはすでに入手可能であり、RAMなしシステム(つまりROMのみを搭載したシステム)は多くの産業現場で人気を博した。 初代Novaは約200 kHzで動作していたが、SuperNova は特殊な半導体メインメモリを使用した場合、最大3MHzで動作するように設計されていた。
バックプレーンとI/O信号が標準化されているため、シンプルで効率的なI/O設計となっており、プログラムされたI/OやデータチャネルデバイスをNovaに接続する際には、競合するマシンと比較してシンプルなものとなっている。 Novaバックプレーンにはワイヤーラップピンがあり、専用のI/Oバス構造に加えて、標準外のコネクタやその他の特殊な用途にも使用できた。
命令フォーマットは、大きく分けて以下の3つの機能に分類される。1)レジスタ間操作、2)メモリ参照、3)入力/出力。 各命令は1語で構成されていた。 レジスタ間操作はRISCに近いビット効率で、レジスタデータを操作する命令は、テストやシフトを実行し、結果の破棄も可能であった。 ハードウェアのオプションとして、整数乗算除算ユニット、 浮動小数点ユニット (単精度および倍精度)、メモリ管理などがあった 。
初期のNovaには、 パンチテープの BASICインタプリタが付属していた。 製品が成長するにつれ、データゼネラルはNovaコンピュータ用に多くの言語を開発し、一貫したオペレーティングシステムの下で動作するようになった。 FORTRAN IV 、 ALGOL 、拡張BASIC、データゼネラルBusiness Basic、Interactive COBOL 、およびいくつかのアセンブラがデータゼネラルから提供された。 サードパーティのベンダーやユーザーコミュニティは、 Forth 、 Lisp 、 BCPL 、 C 、 ALGOL 、およびCOBOLとBASICの他の独自バージョンで製品を拡張した。
以下に実装されている機械語命令は、Novaシリーズのすべてのプロセッサで共通に実装されているものである。 機種によっては追加の命令が実装されていることが多く、オプションのハードウェアによって提供されている命令もある。
すべての算術命令はアキュムレータ間で動作する。 2つのオペランドを必要とする演算では、1つはソース・アキュムレータから、もう1つはディスティネーション・アキュムレータから取り出され、結果はディスティネーション・アキュムレータに格納された。 単一オペランド演算では、オペランドはソース・レジスタから取り出され、結果はデスティネーション・レジスタに置き換わった。 すべての単一オペランド演算では、ソース・アキュムレータとディスティネーション・アキュムレータが同じであることは許容され、演算は期待どおりに機能した。
すべての算術命令には「ノーロード(no-load)」ビットが含まれており、これがセットされると、結果がディスティネーション・レジスタに転送されるのを抑制した。これは、ディスティネーション・レジスタの既存の内容を失うことなくテストを実行するために、テストオプションと組み合わせて使用された。 アセンブリ言語では、オペコードに '#' を追加すると、ノーロード・ビットが設定される。
CPUには、キャリービットと呼ばれる1ビットレジスタがあり、このレジスタは、算術演算の後に最上位ビットのキャリーアウト(桁あふれ)を格納する。 キャリービットは、命令内の2ビットフィールドを使用して演算を実行する前に、必要な値に設定することができる。 ビットは、命令を実行する前にセット、クリア、または補完することができる。 アセンブリ言語では、これらのオプションは、オペコードに文字を追加することによって指定される。 'O' - キャリービットをセット、'Z' - キャリービットをクリア、'C' - キャリービットを補完、何もなし - キャリービットをそのままにする。 ノーロード・ビットも指定された場合、指定したキャリー値が計算に使用されるが、実際のキャリーレジスタは変更されない。
すべての算術命令には、シフトオプションを指定するために使用できる2ビットのフィールドが含まれており、これは結果がディスティネーション・レジスタにロードされる前に適用される。 1ビットの左または右シフトを指定したり、結果の2バイトを入れ替えたりすることができる。 シフトは17ビットの循環で、キャリービットは最上位ビットの「左側」にある。 言い換えれば、左シフトが実行されると、結果の最上位ビットがキャリービットにシフトされ、キャリービットの以前の内容が結果の最下位ビットにシフトされる。 バイトスワップはキャリービットに影響を与えない。 アセンブリ言語では、これらのオプションは、オペコードに文字を追加することによって指定された。 'L' - 左シフト、 'R' - 右シフト、 'S' - バイトスワップ、何もなし - シフトまたはスワップを実行しない。
すべての算術命令には、演算の結果に適用されるテストを指定できる3ビットのフィールドが含まれていた。 テストが真と評価された場合、次の命令はスキップされる。 アセンブリ言語では、テストオプションは命令の第3オペランドとして指定される。 利用可能なテストは次のとおりである:
SZR - 結果がゼロの場合にスキップ
SNR - 非ゼロの結果をスキップ
SZC - ゼロキャリーでスキップ
SNC - ゼロ以外のキャリーでスキップ
SBN - キャリーと結果の両方がゼロ以外の場合はスキップ
SEZ - キャリーまたは結果のどちらか、または両方がゼロの場合はスキップ
SKP - 常にスキップ
何もなし - 決してスキップしない
実際の算術命令は次のようなものである:
MOV - ソース・アキュムレータの内容をディスティネーション・アキュムレータに移動
COM - ソース・アキュムレータのビット単位の補数をディスティネーション・アキュムレータに移動
ADD - ソース・アキュムレータをディスティネーション・アキュムレータに加算
ADC - ソース・アキュムレータのビット単位の補数を取り、デスティネーション・アキュムレータに加算
NEG - ソース・アキュムレータの負値をディスティネーション・アキュムレータに移動
SUB - デスティネーション・アキュムレータからコンテンツ・ソース・アキュムレータを減算
INC - ソース・アキュムレータの内容に1を加算し、デスティネーション・アキュムレータに移動
AND - 2つのアキュムレータのビットごとのANDを実行し、結果をディスティネーション・アキュムレータに配置