紫色のセラミック製筐体、金メッキの金属製蓋とピンを備えたIntel C8008-1プロセッサのバリアント。 | |
| 一般情報 | |
|---|---|
| 発売開始 | 1972年4月 |
| 製造中止 | 1983年[ 1 ] |
| 販売元 | インテル |
| デザイン: | コンピュータ端末株式会社(CTC) |
| 一般的な製造業者 |
|
| パフォーマンス | |
| 最大CPUクロックレート | 500kHz ~ 800kHz |
| データ幅 | 8ビット |
| アドレス幅 | 14ビット |
| 物理的仕様 | |
| トランジスタ |
|
| パッケージ |
|
| ソケット | |
| 建築と分類 | |
| 応用 | コンピュータ端末、電卓、瓶詰め機、1970年代のASEA産業用ロボット[ 2 ](IRB 6)、単純なコンピュータなど。 |
| テクノロジーノード | 10μm |
| 命令 セット | 8008 |
| 歴史 | |
| 後継 | Intel 8080 |
| サポート状況 | |
| サポート対象外 | |
Intel 8008(「8008」または「8008」)は、1972年4月に発表された、16KBのメモリをアドレス指定できる初期の8ビットマイクロプロセッサです。8008アーキテクチャはComputer Terminal Corporation (CTC)によって設計され、 Intelによって実装および製造されました。8008は当初、CTCのDatapoint 2200プログラマブル端末で使用するために設計されましたが、セイコーが電卓への使用に関心を示したため、CTCとIntelの間で合意が成立し、Intelは他の顧客にもこのチップを販売できるようになりました。

Datapoint 3300 の過剰な熱放射などのいくつかの問題に対処するため、 Computer Terminal Corporation (CTC) は、内部回路の一部として CPU を単一チップ上に再実装した 3300 の後継機のアーキテクチャを設計しました。チップ設計を製造できる企業を探していた CTC の共同創設者である Austin O. "Gus" Roche は、当時主にメモリ チップのベンダーであった Intel に目を向けました。[ 3 ] Roche はBob Noyceと会いましたが、Noyce はこのコンセプトに懸念を示しました。John Frassanito は次のように回想しています。[ 3 ]
ノイス氏は、それは興味深いアイデアであり、インテルなら実現できるかもしれないが、愚かな行動だと述べた。コンピュータチップの場合、1台のコンピュータにつき1個のチップしか販売できないのに対し、メモリの場合は1台のコンピュータにつき数百個のチップを販売できるからだ、と彼は説明した。
もう一つの大きな懸念は、インテルの既存顧客が自社製プロセッサで使用するためにインテルのメモリチップを購入していたことだった。インテルが自社製プロセッサを発売すれば、競合相手と見なされ、顧客はメモリを他社に求める可能性がある。それにもかかわらず、ノイスは1970年初頭に5万ドルの開発契約(2025年換算で41万5000ドル相当)に同意した。テキサス・インスツルメンツ(TI)も2番目のサプライヤーとして加わった。
1969年12月、インテルのエンジニアであるスタン・メイザーとCTCの代表者が会談し、新しいCTCビジネス端末に搭載するロジックチップセットの選択肢について話し合った。インテル4004の開発でテッド・ホフと共同作業を行っていたメイザーは、カスタムロジックチップセットを構築するよりも、1チップのプログラマブルマイクロプロセッサの方が扱いやすく、最終的にはコスト効率が良いのではないかと提案した。CTCはこれに同意し、当時1201と呼ばれていたチップの開発作業が始まった。[ 4 ]
TI は Intel の図面に基づいて 1201 のサンプルを作成し、TMX 1795 と名付けました。これらはバグが多く、却下されました。[ 5 ] Intel 独自のバージョンは遅延しました。CTC は、シングルチップ CPU を待つ代わりにシリアルディスクリートTTLを使用して新しいバージョンの端末を再実装することにしました。新しいシステムは1970 年春にDatapoint 2200としてリリースされ、最初の販売は1970 年 5 月25 日にGeneral Millsに対して行われました。 [ 3 ] 2200 のリリース後、1201 は不要になったため、CTC は 1201 の開発を一時停止しました。その後、1971 年初頭に、セイコーは Intel にアプローチし、Busicom がビジネス電卓で使用したよりシンプルな 4004 の成功を見て、科学計算機に 1201 を使用することに興味を示しました。[ 4 ] 4004の設計者であり、現在は 1201 のプロジェクト リーダーであるフェデリコ・ファギンの指揮の下、小規模な再設計が行われ、16 ピンから 18 ピンの設計に拡張され、新しい 1201 は 1971 年後半に CTC に納入された。[ 3 ]
その時点で、CTCは再び次の段階に進み、今度は 1201よりも高速な並列アーキテクチャのDatapoint 2200 IIに着手した。CTCは1201への関与を終了し、5万ドルの契約金を支払う代わりに、設計の知的財産をIntelに譲渡することを決定した。Intelはこれを8008と改名し、1972年4月にカタログに掲載し、価格は120米ドル(2025年換算で924ドル)とした。この改名は、8008を単なる4から8へのポートとして提示することで、4004チップの成功にあやかろうとしたものであったが、8008は4004をベースにしたものではない。[ 6 ] 8008は商業的に成功した設計となった。これに続いて、人気のIntel 8080、そして大成功を収めたIntel x86ファミリーが登場した。[ 3 ]
英国では、1972年にトム・スピンクが率いるSE Laboratories Engineering (EMI) のチームが、8008のプレリリースサンプルをベースにマイクロコンピュータを構築した。ジョー・ハードマンは外部スタックでチップを拡張した。これにより、とりわけ電源障害時のセーブとリカバリが可能になった。ジョーはまた、直接スクリーンプリンタも開発した。オペレーティングシステムは、L. クロフォードとJ. パーネルがDigital Equipment Corporation PDP-11用に開発したメタアセンブラを使用して記述された。[ 7 ]オペレーティングシステムはPROMに書き込まれた。割り込み駆動、キューイング方式で、プログラムとデータには固定ページサイズが使用された。
8008は、最初の商用非計算機パーソナルコンピュータ(Datapoint 2200自体を除く)のCPUでした。具体的には、米国のSCELBIキット、フランスのMicral N、カナダのMCM/70の組み立て済み製品です。また、ヒューレット・パッカードの2640ファミリーのコンピュータ端末の最初の数機種の制御マイクロプロセッサでもありました。 [ 8 ]
1973年、インテルは8008用の命令セットシミュレータであるINTERP/8を提供した。 [ 9 ]これは、インテルのコンサルタントとして働いていたゲイリー・キルダルによってFORTRAN IVで書かれた。 [ 10 ] [ 11 ]
8008アーキテクチャには以下の機能が含まれています。[ 12 ]
8008は18ピンのデュアルインラインパッケージで提供されました。[ 12 ]

| 1 3 | 1 2 | 1 1 | 1 0 | 0 9 | 0 8 | 0 7 | 0 6 | 0 5 | 0 4 | 0 3 | 0 2 | 0 1 | 0 0 | (ビット位置) |
| 主要レジスター | ||||||||||||||
| A | 蓄電池 | |||||||||||||
| B | Bレジスター | |||||||||||||
| C | Cレジスタ | |||||||||||||
| D | Dレジスタ | |||||||||||||
| E | 電子登録 | |||||||||||||
| H | Hレジスタ(間接) | |||||||||||||
| L | Lレジスタ(間接) | |||||||||||||
| プログラムカウンター | ||||||||||||||
| PC | プログラムカウンター | |||||||||||||
| プッシュダウンアドレスコールスタック | ||||||||||||||
| として | レベル1を呼び出してください | |||||||||||||
| として | レベル2を呼び出してください | |||||||||||||
| として | レベル3を呼び出してください | |||||||||||||
| として | レベル4を呼び出してください | |||||||||||||
| として | レベル5を呼び出してください | |||||||||||||
| として | レベル6を呼び出してください | |||||||||||||
| として | レベル7を呼び出してください | |||||||||||||
| 旗 | ||||||||||||||
| C | P | Z | S | フラグ[ 13 ] [ a ] | ||||||||||
8008 は 10 μmシリコンゲート拡張モードPMOS ロジックで実装されました。初期バージョンは最大 0.5 MHz のクロック周波数で動作できました。これは後に 8008-1 で最大 0.8 MHz に増加しました。命令は 3 ~ 11 T ステートかかり、各 T ステートは 2 クロックサイクルです。[ 14 ] レジスタ間ロードと ALU 演算は 5T ( 0.5 MHz で 20 μs )、レジスタメモリ間は 8T (32 μs)、コールとジャンプ (実行される場合) は 11 T ステート (44 μs) かかります。[ 15 ] 8008 は、 1 秒あたりの命令数(0.8 MHz で 36,000 ~ 80,000 ) で、4 ビットIntel 4004およびIntel 4040より わずかに遅くなっています。[ 16 ]しかし、8008は一度に8ビットのデータを処理し、より多くのRAMにアクセスできるため、ほとんどのアプリケーションではこれらのプロセッサよりも大幅に速度が優れています。8008には3,500個のトランジスタがあります。[ 17 ]
18ピンDIPに制限されたこのチップは、8ビットのデータビット、14ビットのアドレスビット、および2ビットのステータスビットを転送する3つの役割を果たす単一の8ビットバスを備えています。この小さなパッケージでは、メモリとのインターフェースに約30個のTTLサポートチップが必要です。[ 18 ]例えば、「16K×8ビットのメモリ」にアクセスできる14ビットのアドレスは、このロジックの一部によって外部メモリアドレスレジスタ(MAR)にラッチされる必要があります。8008は8つの入力ポートと24の出力ポートにアクセスできます。[ 14 ]
コントローラやCRT端末用途であれば、この設計は許容範囲内だが、他のほとんどの用途においては、少なくとも次世代のマイクロプロセッサと比較すると、かなり扱いにくい。
その後の40ピンNMOS Intel 8080は、8008のレジスタと命令セットを拡張し、より効率的な外部バスインターフェース(22ピンの追加ピンを使用)を実装しました。アーキテクチャ上の関係は密接でしたが、8080は8008とバイナリ互換性がなかったため、8008プログラムは8080では実行できませんでした。しかし、8008アセンブラと同じ構文と命令ニーモニックをサポートしながら8080マシンコードを生成する8080用アセンブラが存在したため、8008用のアセンブラ言語コードを8080マシンコードにアセンブルすることができました。[ 19 ]
Intel 8085は、8080の電気的に近代化されたバージョンであり、空乏型トランジスタを使用し、さらに2つの新しい命令を追加している。
オリジナルのx86プロセッサであるIntel 8086は、8080の非厳密な拡張版であるため、オリジナルのDatapoint 2200の設計にも大まかに似ています。Datapoint 2200および8008の命令のほぼすべては、8080、8085、Z80の命令セットだけでなく、最新のx86プロセッサの命令セットにも同等の命令が存在します(ただし、命令のエンコーディングは異なります)。
命令は 1 ~ 3 バイト長です。命令フォーマットは、オペコード 1 バイトに続いて最大 2 バイトのオペランドが続きます。オペランドは、アドレス、定数、レジスタ、または HL レジスタ ペアが指すメモリ (M と表記) のいずれかです。8008 には、プログラム カウンタを新しいメモリ アドレスに置き換える JMP (ジャンプ) 命令があります。さらに、CAL (コール) 命令と RET (リターン) 命令は、7 レベルのサブルーチン呼び出しを提供します。RST (リスタート) 命令は、最初の 64 命令バイトにある 8 つのサブルーチンを実行する 1 バイトのショートカットです。サブルーチンは、00h、08h、10h、...、38h の固定アドレスにあります。これらは、割り込みサービス ルーチンを呼び出すために外部ハードウェアに提供されることを想定しており、高速呼び出しとして使用できます。任意の 2 つのレジスタ間、またはレジスタとメモリ間で直接コピーを行うことができます。アキュムレータ(A)と任意のレジスタ、メモリ、または即値との間で、8つの算術/論理演算がサポートされています。結果は常にレジスタAに格納されます。命令は8ビットのみで動作し、16ビット演算はありません。インクリメントとデクリメントはほとんどのレジスタでサポートされていますが、不思議なことにレジスタAではサポートされていません。レジスタAは4つの回転命令をサポートしています。
すべての命令は3~11の状態において実行されます。各状態には2つのクロックが必要です。
以下の 8008アセンブリソース コードは、指定されたサイズのデータ バイト ブロックをある場所から別の場所にコピーするサブルーチンですMEMCPY。Intel の 8008 アセンブラは、+ 演算子と - 演算子のみをサポートしていました。この例では、8080 アセンブラの AND 演算子と SHR (右シフト) 演算子を借用して、14 ビット アドレスの下位バイトと上位バイトを選択し、8 ビット レジスタに配置します。当時の 8008 プログラマは、数値を計算してアセンブラに入力することが想定されていました。
上記のコードでは、すべての値が8進数で指定されています。SRC、DST、 は、CNTという名前のサブルーチンの16ビットパラメータですMEMCPY。実際には、CPUのアドレス指定可能なメモリ空間が14ビットしかないため、値の14ビットのみが使用されます。値はリトルエンディアン形式で格納されますが、これは任意の選択です。CPUは一度に1バイトを超えるデータをメモリに読み書きできないためです。指定されたメモリ アドレスからレジスタを直接ロードする命令がないため、まずHLレジスタ ペアにアドレスをロードし、次にMオペランドからターゲット レジスタをロードします。これは、HLレジスタ ペアのメモリ位置からの間接ロードです。BCレジスタ ペアにはパラメータCNT値がロードされ、ループの最後に0になるまでデクリメントされます。使用されている命令のほとんどは、単一の8ビット オペコードであることに注意してください。
以下の8008アセンブリソースコードは、ある場所から別の場所にデータバイトのブロックをコピーする、MEMCPY2という名前の簡略化されたサブルーチン用です。バイトカウンタを8ビットに減らすことで、サブルーチンのすべてのパラメータを8008のレジスタファイルにロードするのに十分なスペースが確保されています。

8008の割り込み機能は部分的にしか実装されていません。INTラインがアサートされると、8008はT1I時刻に状態コードS0,S1,S2 = 011を出力して割り込みを認識します。次の命令フェッチサイクルで、バス上の外部ハードウェアによって命令が「ジャム」(Intelの用語)されます。通常、これは1バイトのRST命令です。
ここで問題が発生します。8008 にはアーキテクチャの状態を保存する機能がありません。8008 は HL レジスタペアのアドレスを介してのみメモリに書き込むことができます。割り込みが発生すると、HL を保存するメカニズムがないため、HL を介して他のレジスタやフラグを保存する方法がありません。このため、ハードウェアスタックや読み書きレジスタのペアなどの外部メモリデバイスを I/O ポートを介して 8008 に接続し、8008 の状態を保存する必要があります。[ 20 ]
まず、4004 と 8008 は全く異なるチップです。マーケティングでは、4 ビット版と 8 ビット版のように聞こえますが、それらはまったく異なります。
8008 用に作成されたプログラムは、8080 上でアセンブルおよび実行できます。