データゼネラルNova
データゼネラルは当初、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つの命令をフェッチすることで性能を向上させる「プリフェッチャ」が搭載されていた。
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年の春に中止された。
この命令が発行されると、バックプレーン上のすべてのデバイスに16ビットの割り込みマスクが送信された。 マスクが実際に何を意味するかを決定するのはデバイス次第であった。慣例により、マスクアウトされたデバイスは割り込みラインを立ち上げてはいけないとされていたが、CPUはこれを強制する手段を持っていなかった。 マスク可能なデバイスの多くは、基板上のジャンパーでマスクビットを選択できるようになっていた。 マスクを完全に無視するデバイスもあった。
磁気コアメモリ(電源がなくても内容を保持する)を備えたシステムでは、電源障害からの回復が可能であった。 コンピュータの主電源の喪失を検出すると、CPU内の停電検出回路が割り込みを発行し、その時点から電源装置のコンデンサが充電されなくなってCPUへの電力供給が停止するまでにCPUには少し時間があった。 これは、IORST命令を発行して進行中のI/Oを停止し、4つのアキュムレータの内容とキャリービットをメモリに保存するのに十分な時間であった。 電源が回復したときに、CPUのフロントパネルのキースイッチがLOCK位置にあれば、CPUは起動してメモリアドレス2を経由して間接ジャンプを行う。 これは、アキュムレータとキャリービットを再ロードし、その後、通常の処理を再開するオペレーティングシステムのサービスルーチンのアドレスであると予想されていた。 電源障害によって中断されたI/O操作をどのようにして再開するかは、サービスルーチンにかかっていた。
以下に実装されている機械語命令は、Novaシリーズのすべてのプロセッサで共通に実装されているものである。 機種によっては追加の命令が実装されていることが多く、オプションのハードウェアによって提供されている命令もある。
Nova命令セットには、メモリの内容をアキュムレータに転送する命令とその逆の命令のペア、2つの制御転送命令、およびメモリ・ロケーションの内容をテストする2つの命令が含まれている。 すべてのメモリ参照命令には、8ビットのアドレス・フィールドと、メモリ・アドレッシングのモードを指定する2ビットのフィールドが含まれていた。 4つのモードは次のとおりである:
Mode 0 - 絶対アドレッシング。 命令のアドレス・フィールドの内容は左側がゼロで埋められ、ターゲット・アドレスとして使用されます。
Mode 1 - 相対アドレッシング。 命令のアドレス・フィールドの内容は、左に符号拡張され、プログラムカウンタの現在値(命令が実行されるまでに次の命令を指します)に加算する。 その結果がターゲット・アドレスとして使用される。
Mode 2 - インデックス・アドレッシング。 命令のアドレス・フィールドの内容が、左に符号拡張され、アキュムレータ2の現在値に加算される。その結果がターゲット・アドレスとして使用される。
Mode 3 - インデックス・アドレッシング。 命令のアドレス・フィールドの内容が、左に符号拡張され、アキュムレータ3の現在値に加算される。 その結果がターゲット・アドレスとして使用される。
明らかに、Mode 0は、8ビットのアドレス・フィールドがあるため、最初の256メモリ語だけをアドレス指定できた。 メモリのこの部分は「ページ・ゼロ」と呼ばれていた。 ページ・ゼロのメモリ・ワードは、利用可能な数が少ないため、Novaのアセンブリ言語プログラマにとって貴重なものと考えられていた。