General Instrument CP1600

CP1600は、1975年にジェネラル・インストゥルメントとハネウェルの共同開発によって作られた16ビットマイクロプロセッサである。

CP1600の設計は、PDP-11に基づいている。PDP-11の設計は、ウエスタンデジタル MCP-1600の基礎をなし、他のマイクロプロセッサにも影響を与えた。

ハネウェルは、多くの産業用制御システム（:en:Industrial control system）とその関連システムにCP1600を使った。しかし、最も広まった用途は、ビデオゲーム機「インテレビジョン」にCP1610を搭載することであった。

解説
+ CP1600 registers 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 (bit position) Main registers  R0 Register 0 / Accum R1 Register 1 / Indirect R2 Register 2 / Indirect R3 Register 3 / Indirect R4 Register 4 / Autoincrement R5 Register 5 / Autoincrement R6 / SP Register 6 / Stack Pointer R7 / PC Register 7 / Program Counter Status flags   S Z OV C Status Flags


CP1600の命令セットは、PDP-11のそれに近い。しかし、完全互換ではない。
命令オペコードは、10ビットだけであった。残りの6ビットは、将来の拡張用に予約されていた。
拡張用の6ビットは、コプロセッサと一緒に使用することを意図していたと思われる。CP1600のPCIT端子をアサートすると、アサートが解放されるまでCPUが停止する。
命令は、1ワード（16ビット）から3ワードまでの長さと思われ、使用するアドレッシングによって変化する。
類似のCPUと違って、CP1600は、メモリーメモリ間接アドレッシング（オフセット）に対応していなかった。そして、ループは、別の方法で実装されていたので、より高速に動作することを可能とした。

PDP-11のようにCP1600は、8つの16ビット汎用レジスタ（R0からR7）を使用した。ただし、現代的な設計のような本当の汎用レジスタではなかった。
R0だけは、本当の汎用レジスタであり、「主要アキュムレータ」（the primary accumulator）として説明されてきたLowell Turner, "General Instruments CP1600", 10 July 2001。
R1からR3は、データカウンタであった。一般的にレジスタ基準のアドレッシング（暗黙のアドレッシング）のために使用された。
R4からR5は、アクセスされた後に自動的にインクリメントするレジスタであった。データ収集中のループのために役立った。

R6は、スタックレジスタであり、R7は、プログラムカウンタであった。
R6とR7は、プログラマーから見ることができるので、複数のスタックを実装したり、より複雑な分岐を実現するために使用することができた。
スタック命令は存在しなかった。R6が読取命令（MVI命令）で使用されたとき、アドレスをデクリメントし、指定されたデータを返す。この動作は、スタックのPOPを模している。R6が書込命令（MVO命令）で使用されたとき、データを書き込んだ後にアドレスをインクリメントする（R4/R5のように）。この動作は、スタックのPUSHと似ている。CP1600のアセンブリ言語において、POP = MVI@R6、PUSH = MVO@R6と記述できる。しかし、それぞれアセンブリ疑似命令PULR、PSHRに置き換えることができるので、機械語にスタック命令がなくてもアセンブリ言語上ではスタック命令があるように扱えるSERIES 1600 MICROPROCESSOR SYSTEM, P125。

PDP-11と同様にCP1600の注目に値する機能の一つがメモリマップドI/Oの利用であった。つまり、デバイスはメモリの特定の箇所に書き込むことによって制御されたことを意味する。
しかしながら、PDP-11のUnibusと異なり、CP1600は、ピン数を減らして40ピンDIPに合わせるためにデータ線とアドレス線を多重化していた。
同じバス上にアドレスとデータを多重化したので、CPUと周辺回路を接続するためにラッチ回路とバッファを使うことが必要であった 。
この多重化は、I/Oの性能を低下させた。この問題に対処するためにジェネラル・インストゥルメントは、チャネル・コントローラとしてCP1600と一緒に動作するように設計されたPICを設計した。

CP1600は、nMOS で実装され、+12, +5, -3 Vの電源を要求した。最も内部的な論理回路は、TTL (5 V)で実装された。
各マイクロステート、あるいは、各プロセッササイクルは、2つのノンオーバーラップクロックによって生成された4つの内部時間スロットを使用する。
3.3 MHz（1周期300ナノ秒）の2相クロックは、600 ナノ秒のマイクロサイクルを生成する。
5 MHz（1周期200ナノ秒）の2相クロックは、400 ナノ秒のマイクロサイクルを生成する。
2つの16ビット内部レジスタを2.4マイクロ秒で加算でき、2つの16ビット整数を3.2マイクロ秒で加算できたhttp://www.bitsavers.org/components/gi/CP1600/CP-1600_Microprocessor_Users_Manual_May75.pdf。

ジェネラル・インストゥルメントは、16ビットミニコンピュータ、あるいは、16ビットより上位のミニコンピュータと互換性のあるクロスアセンブラとシミュレータ／デバッガを提供していたhttp://www.bitsavers.org/components/gi/CP1600/CP-1600_Cross_Assembler_Simulator_Users_Manual_Nov74.pdf。
ジェネラル・インストゥルメントは、GIC1600というCP1600を内蔵した単独動作できるマイクロコンピューターシステムも提供していたhttp://www.bitsavers.org/components/gi/CP1600/GIC1600_Microcomputer_Users_Manuals_Sep75.pdf。

使用例
ビデオゲーム機「インテレビジョン」に使われていたCP1610は、CP1600マイクロプロセッサファミリと互換性がある。
CP1610は、1マイクロ秒のプロセッササイクルを生成する2 MHzの2相クロックを使用するhttp://intellivisionbrasil.com/docs/manuais-hardware/Service_GeneralInstrument_CP1610.pdf。
NTSC版のインテレビジョンに内蔵されたCP1610は、1.7897725 MHzの2相クロックを使用する。
従来のコンピューターの役割においてCP1600の利用者は比較的マレであったけれど、300万台以上のインテレビジョンが1980年から1984年まで製造された。アタリショックがインテレビジョンの製造ラインの閉鎖を導いた。

CP1600の製造は、1985年に終了した。ジェネラル・インストゥルメント社が、マイクロチップ・テクノロジー社を作るためにマイクロエレクトロニクス部門をスピンオフしたときであった。
この時点でMC68000のような32ビット設計が可能であったので、CP1600のような16ビット設計への関心は限定的になっていた。そして、CP1600の主要な既存顧客であったインテレビジョンはすでに製造されていなかった。
他の製品の多くは、同時期にサポート終了になっていた。そして、マイクロチップ・テクノロジー社の主要製品は、PICであった。

出典

外部リンク
 "CP1610" at the Intellivision Wiki

Category:マイクロプロセッサ