
CP1600は、ゼネラル・インスツルメンツ社とハネウェル社が共同で開発し、1975年2月に発表された16ビット マイクロプロセッサである。 [1] [2]これは、最初のシングルチップ16ビットプロセッサの1つである。全体的な設計はPDP-11と非常によく似ている。
ハネウェルは、 CP1600 を数多くのプロセス制御コンピュータや関連システムに使用しましたが、最も広く使用されたのは、 Intellivisionビデオゲーム コンソールのCP1610バージョンでした。ゼネラル インストゥルメントのマーケティング方針は、非常に大きな注文の顧客のみを探し、小規模な顧客を無視することだったため、このシステムは他の用途にはほとんど使用されませんでした。また、マイクロプロセッサ設計の初期には、ほとんどの潜在的顧客にとって必須であったセカンド ソース契約も追求しませんでした。 [3]
説明
物理的な実装

CP1600 はエンハンスメントモード nMOSで実装され、+12、+5、-3 V の電源が必要でした。クロック以外の I/O 接続はTTL (5 V) と互換性がありました。[a]各マイクロステートまたはプロセッサ サイクルは、2 つの重複しないクロックによって生成される 4 つの内部タイム スロットを使用します。3.3 MHz の 2 相クロックは、600 ナノ秒のマイクロサイクルを生成します。5 MHz の 2 相クロックは、400 ナノ秒のマイクロサイクルを生成します。クロック信号の電圧要件のため、これらは、この時代のマイクロプロセッサ設計では一般的だったように、外部回路で生成する必要がありました。[3]
16ビットプロセッサを40ピンのデュアルインラインパッケージ(DIP)チップ設計に収めるために、CP1600はデータピンとアドレスピンを多重化しました。これにより、16ピンのセットをアドレス選択とデータの読み取り/書き込みの両方に使用できるようになりましたが、それには2つのバスサイクルが必要でした。また、プロセッサがピンをデータモードに切り替える間にアドレスをラッチするためにメモリバスにバッファが必要になったため、マシン全体のレイアウトが複雑になりました。システムへのインターフェイスも同様に複雑で、、、の3つのピンが必要であり、BDIRメモリバスの状態を理解するためにデコードする必要がありました。[4]BC1BC2
CP1600 の比較的珍しい機能は、「外部分岐」の概念でした。これは、命令オペコードの下位 4 ビットを保持するEBCA0から までの4 つのピンとしてチップ上に実装されました。この命令が実行されると、ピンがアクティブになり、最大 16 個の外部システムのうちのどれをサンプリングするかを示すために使用されます。これらのデバイスは、ピンを設定することでクエリに応答し、このピンの状態によって分岐が実行されるかどうかが決定されます。[4]たとえば、これは、外部デバイスに処理する必要のある入力データがあるかどうかをテストするために使用できます。プロセッサは、デバイス 2 をサンプリングするために で値「2」を表現し、 を呼び出します。すると、そのデバイスは、データがある場合は を true に設定して応答し、プロセッサはコードにジャンプしてそのデバイスからデータを読み取ることができます。
EBCA3BEXTEBCIEBCABEXTEBCI
これは、外部デバイスを処理するための一般的なソリューションとは対照的です。ほとんどのシステムでは、デバイスが割り込みを発生させ、プロセッサが特別なコード (割り込み ハンドラ)を呼び出し、次に割り込みを呼び出したデバイスを判断するために追加データを読み取ります。この追加データは、CPU 上の専用ピンを使用して提示される場合もありますが、多くの場合、データ バス上の値として提示されます。次に、割り込み ハンドラ コードは、データを処理するために呼び出すデバイス ドライバを決定します。CP1600 は、より少ない命令でこれを実装できます。割り込み ハンドラは、関連するドライバを指す一連の命令にすぎず、問題のデバイスが を設定し、自動的にコードを分岐させる
BEXTまで、一度に 1 つずつ実行されます。EBCI
全体として、CP1600 を使用したシステムを実装するには、追加のサポート チップとロジックが必要になることが多かった。これには、外部分岐が使用されている場合に 16 個の信号を 1 つのピンに多重化するシステムや、外部部品でバス ステータス信号をデコードする必要を回避するための 3 ビットから 8 ラインへのコンバータが含まれていた。[3]
命令セットとレジスタ
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
命令オペコードで使用可能な16ビットのうち、CP1600は10ビットのみを使用しました。残りの6ビットは「将来使用」とマークされていました。[5] 10ビット命令は、一般的なバイト指向のROMに格納されたコードが命令ごとに6ビットを無駄にすることを意味しました。高価なメモリの時代には、これは重大な問題でした。これを解決するために、General Instrumentは命令を効率的に格納する特別な10ビットROMも製造しました。データとアドレスには依然として16ビットの値が必要であるため、1600には、2つの10ビットROM読み取りから16ビットの引数を組み立てる特別なSDBD命令が含まれていました。
未使用の6ビットはコプロセッサで使用することを意図しており、PCIT解放されるまでCPUを停止させるラインをアサートします。初期の資料には、このシリーズで計画されているチップが2つあり、1つは「拡張命令セット」を追加した1616、もう1つは「優先度拡張器」を追加した1618です。[6]
システムには 87 の基本命令が含まれていました。命令の長さは、使用されているアドレス指定形式に応じて 1 ~ 3 の 16 ビット ワードになります。[4] CP1600 はメモリ間間接アドレス指定 (オフセット) をサポートしておらず、ループはメモリ内のアドレスを 1 サイクルで変更する専用の加算器を使用して実装されていました。算術論理ユニット(ALU) は 16 ビット幅で、2 つの 16 ビット内部レジスタを 2.4 マイクロ秒で加算し、メモリとレジスタ間の 16 ビット数値の加算を 3.2 マイクロ秒で実行できました。[7]
PDP-11と同様に、CP1600は8つの16ビット「汎用」プロセッサレジスタを使用していましたが、現代の設計のように真の汎用性はありませんでした。R0のみ事前に定義された目的がなく、「プライマリアキュムレータ」と呼ばれていました。[8] R1からR3はデータポインタとして使用でき、通常はレジスタベースのアドレス指定(「暗黙のアドレス指定」)に使用されます。R4とR5はアクセス後に自動的に増分されるため、データのコレクションをループするのに便利です。
R6 はスタック ポインターで、R7 はプログラム カウンターです。これらのレジスターは両方ともプログラマーに見えるため、複数のスタックを実装したり、より複雑な分岐をサポートしたりするために使用できます。暗黙のスタック命令はありません。R6 を「読み取り」操作で使用すると、アドレスをデクリメントしてから、ポイントされているデータを返し、 をシミュレートします。POPまた、「書き込み」で使用すると、(R4/R5 のように) ポスト インクリメントを書き込み、 をシミュレートしますPUSH。
入出力
当時の一般的なやり方として、CP1600 はIntelシステムに見られるような独立した I/O ピンではなく、メモリマップド I/O を採用していました。多重化バスとマルチステートバスステータスの使用により、メモリマップドシステムで通常行われる場合よりも I/O の実装が難しくなりました。つまり、バスがアドレスを示すものからデータを示すものに変更されるときに、実装では CPU とインターフェイスできるようにラッチまたはバッファを使用する必要がありました。[8]これにより、I/O パフォーマンスに悪影響が及ぶとともに、I/O デバイスの複雑さが増しました。
この問題を解決するために、GI は必要なバス ロジックを実装した一連の 164x 専用 I/O チップを供給しました。これらには、たとえば 1641 キーボード コントローラ、1643 カセット テープ コントローラ、および 1647 ディスプレイ コントロールが含まれています。[6]これらの中でもっとも有名なのは、CP1600 と連携して動作し、 CPU のチャネル コントローラとして機能するように設計された 1640 「プログラマブル インターフェイス コントローラ」 、つまり PIC です。他の 1640 シリーズ チップと同様に、PIC はバス ロジックを内部でデコードしますが、独自のプログラムを実行して I/O と直接メモリ アクセスを実行できる非常にシンプルなプロセッサも追加しました。たとえば、フロッピー ディスクカード上の PIC に命令を送信して、ディスク上の特定のセクターからデータを読み取ることができます。次に、PIC はデータを独自の内部バッファに読み込み、バス ステータス ピンがすべてゼロになっている未使用の時間をバスで監視してから、データをメイン メモリに送信します。[6]
General Instrument社は、16ビット以上のミニコンピュータと互換性のあるクロスアセンブラとシミュレータ/デバッガを提供しました。[9] GI社はまた、GIC1600でスタンドアロンのCP1600ベースのマイクロコンピュータシステムも提供しました。[10]
用途
CP1610は、 Champion 2711 [11]や最も有名なIntellivisionなどのゲーム機で使用され、1600マイクロプロセッサファミリの互換メンバーです。2MHzの2相クロックを使用して、1マイクロ秒のプロセッササイクルを生成します。NTSC IntellivisionのCP1610は、1.7897725MHzの2相クロックを使用します。従来のコンピュータの役割でCP1600を使用する人は比較的まれでしたが、1980年から1983年のビデオゲームクラッシュにより1984年にIntellivisionの生産ラインが閉鎖されるまで、300万台以上のIntellivisionが生産されました。 [12]
CP1600 の生産は、General Instrument がマイクロエレクトロニクス部門を分離してMicrochip Technology を設立した 1985 年に終了しました。この時点で、 MC68000などの 32 ビット設計が多数提供されていたため、CP1600 などの 16 ビット設計への関心は低くなり、主な既存顧客である Intellivision は生産を終了していました。他の多くの製品も同時に 生産終了となり、主力製品は PIC でした。
注記
- ^ たとえば、12V 信号を出力し、TTL コンポーネントで使用するために広範なインターフェイスを必要とするNational Semiconductor PACEとは対照的です。
参考文献
引用
- ^ 「ゼネラル・インストゥルメンツのマイクロプロセッサはミニコンピュータ市場を狙う」2000 年 1 月。
- ^ ベルツァー、ジャック、ホルツマン、アルバート G.、ケント、アレン (1978)。コンピュータサイエンスとテクノロジーの百科事典: 第 10 巻 - 微生物の線形および行列代数: コンピュータ支援による識別。CRCプレス。p. 402。ISBN 9780824722609。
- ^ abc オズボーン1981、p.2.1。
- ^ abc Series1600 1975、2.1。
- ^ CP-1600 マイクロプロセッサ ユーザーズ マニュアル(PDF) (S16DOC-CP 1600 -04 版)。General Instruments。1975 年 5 月。2022 年7 月 5 日に閲覧。
- ^ abc Series1600 1975、p. i.
- ^ シリーズ1600 1975年。
- ^ ローウェル・ターナー、「ゼネラル・インスツルメンツ CP1600」、2001 年 7 月 10 日
- ^ CP-1600 クロスアセンブラシミュレータ ユーザーズマニュアル(PDF)。General Instrument。1974 年 11 月。
- ^ GIC1600 マイクロコンピュータ ユーザーズ マニュアル(PDF)。General Instrument。1975 年 9 月。
- ^ “Champion 2711 |Pre-83”. pre83.com . 2022年5月23日閲覧。
- ^ 「Mattel Intellivision - 1980-1984」。ClassicGaming。IGN。2008年6月23日時点のオリジナルよりアーカイブ。2008年5月16日閲覧。
文献
- Osborne (1981)。Osborne 16 ビット マイクロプロセッサ ハンドブック。Osborne/McGraw- Hill。ISBN 0-931988-43-8。
- シリーズ 1600 マイクロプロセッサ システム(PDF)。General Instrument。1975 年。
外部リンク
- Intellivision Wiki の「CP1610」
