システム・コスト低減のために,メモリー用16ピン・パッケージを使用するので,システム・バスにROMやRAMを選択するチップ選択用制御信号にも時分割した制御バス(CM-ROMとCM-RAM0-3)を導入した。そのために追加した命令がチップ選択用命令DCL(Designate Command Line)であった。この工夫により,高価なアドレス・デコーダ回路を使わずに,ROMは最大16個,RAMは最大4個搭載することが可能となった。

 ホフの原案では,RAMは,16桁分のデータ用レジスタと,符号と小数点位置情報を格納するステータス用レジスタなどで構成されていた。しかし,インタープリタを含むシステム全体の制御や入出力機器制御をプログラムで行うためにはプロセッサ内の16本の汎用レジスタだけでは不足となった。そのため,各データ用レジスタに4本ずつのステータス・レジスタを設けた。このことにより,汎用レジスタの一部をRAMのステータス・レジスタに退避させることが可能となり,プログラムの作成が容易となり柔軟性も確保できた。

 LSIのみでシステムを構築する目的が達成できた。プリンタ付き電卓のシステムの構成は,CPUが1個,ROMが4個,RAMが2個,拡張ポートがキーボード用に1個,プリンタ用に2個と予想された。合計10個のLSIが必要となった。結局,使用個数は渡米前と同じだった。

 1969年8月下旬のホフからの提案からすべての技術的問題を解決するのに約3カ月を要した。次なる課題は製品機能仕様書の作成であった。

 4004シリーズLSIの仕様は以下のようになった。

 4004システムは,中央処理ユニットとしてのCPU,プログラム記憶用メモリーROM(256バイト),データ記憶用RAM(4レジスタ: データ用4 x 16 ディジット + ステータス用4 x 4 ディジット),10ビットのシリアルデータをパラレルデータに変換するイネーブル端子付き拡張出力ポートの4種類のLSIで構成する。CPUとROMとRAMを,4ビットの双方向性システム・バスを介して結合する。ROMに入力か出力かをメタル層で端子毎に選択可能な4ビットの入出力ポート,RAMに4ビットの出力ポートを設ける。CPUにROMとRAMメモリーのチップ選択命令とチップ選択回路を設ける,外部のデコーダ回路なしで,ROMは最大16個,RAMは最大4個搭載可能とする。

図1●4004システム構成図
図1●4004システム構成図 [画像のクリックで拡大表示]

 CPUのプロセッサとしてのア-キテクチャは,4ビットの2進プロセッサ,シングル・アキュムレータ&マルチプル・レジスタ方式,2/1オペランド形式,リトルエンディアンマシンとする。汎用レジスタとして4ビット・レジスタを16本設け,2本を組み合わせて8ビットのペアレジスタとして使用可能とする。アドレス・スタックをCPU内部に設け,サブルーチン分岐命令を使って,サブルーチンを3段まで使用可能とする。また,サブルーチンからの復帰命令では命令内で指定した戻り値をアキュムレータに返す。

 アキュムレータに対して,ロード,即値ロード,データ交換,加減算,10進補正,ローテート,インクリメント,デクリメント,キーボード用コード変換などの命令を設ける。分岐命令には無条件分岐と条件付き分岐とループ分岐などの命令を設ける。外界の状況はTest入力端子を介して条件付き命令を使って判別する。ペアレジスタを使ったレジスタ間接分岐命令と8ビット定数ロード命令を設ける。8ビット定数ロード命令のアドレス指定には直接アドレス指定とレジスタ間接アドレス指定を設ける。

 原則として,2つのオペランドを用いる2オペランド命令では,第1オペランドとしてアキュムレータを暗黙的に選択し,第2オペランドとして汎用レジスタまたはメモリーを選択する。1つのオペランドのみ用いる1オペランド命令では,オペランドとして,アキュムレータ,汎用レジスタまたはメモリーを選択する。

 RAMのデータ用メモリーへのアドレス指定はレジスタ間接アドレス指定とし,ステータス・レジスタへのアドレス指定は命令で直接行う。RAMとROMへのアクセスは,アドレス送出命令と実行命令に分ける。実行命令として,RAMとROMの入出力ポートに対してはロードとストア命令,RAMのデータ用メモリーとステータス・レジスタに対してはロードとストアと加算と減算命令を用意する。

 4004システムでは,最初の3クロック(A1,A2,A3)で,12ビットのアドレス情報を3回に分けて,双方向性マルチプレクス・システムバスを介してROMに送る。選ばれたROMは次の2クロック(M1,M2)で命令を,システム・バスを介してCPUとRAMに送る。M2時に各ROMとRAMでも命令を解読し,入出力命令やメモリー・アクセス命令に備える。CPUとROMとRAMは最後の3クロック(X1,X2,X3)で解読した命令を実行する。各チップ間の同期をとるため,同期用信号SYNCがX3時にCPUから送出される。

図2●4004システムのタイミング図
図2●4004システムのタイミング
[画像のクリックで拡大表示]

 英語の苦手な私は,製品機能仕様書を以下のように作成した。まず,英語による説明不足を解決するために,プロセッサとファミリーLSIの機能仕様書に豊富な図を挿入した。次に,インテルで最も優秀な秘書にタイプを依頼した。結果的に,文章もネイティブが書いた英文となった。製品用の4004マニュアルには私が作成した図や文章が使われている。また,LSIの設計を容易に行えるように,後にプロダクト・インプリメンテーション・プラン(PIP: Product Implementation Plan)と言われるようになったLSI設計に関する製品設計計画書の原案も図入り英文で作成した。

図3●4004システム機能仕様書内の一部
図3●4004システム機能仕様書内の一部
[画像のクリックで拡大表示]

図4●4004の命令仕様書の一部
図4●4004の命令仕様書の一部
[画像のクリックで拡大表示]

図5●9月下旬頃のインテルからの命令セット(注:回顧録(7)の命令セットの違いがわかる資料)
図5●9月下旬頃のインテルからの命令セット
(注:回顧録(7)の命令セットの違いがわかる資料)

[画像のクリックで拡大表示]

 ビジコンは,後に,経営が悪化したときに,4004シリーズに関連するすべての権利をインテルに売却した。売却と同時にビジコンが開発した大部分もインテルが行ったようになってしまった。今思い出しても,非常に残念だ。しかし,インテルで4004シリーズの開発に関与した技術者は,具体的な仕様の決定,論理設計,機能仕様書の作成などの実作業をしなかったために,誰一人として,4004開発物語を本として書くことは出来なかった。

 英会話は苦手であった。本格的に英会話の勉強をしたこともなく,語彙も少なく,おまけに辞書も持たずに渡米した。インテルを訪問したビジコンの役員が呆れて,持っていた辞書をくれたぐらい英語に関しては準備しなかった。しかし,自分の情報や相手の情報が価値あると認め,「伝えたい,聞きたい」という気持ちが伝われば,会話は何とかなるものである。ホフは,実に紳士であり,「わからない」と言うと,違ったアプローチで何度でも説明してくれた。私も,ホフを見習って,自分の主張が通じていないと感じたときは,相手がわかるまで,違ったアプローチで何度でも説明した。相手の主張と議論の結果は,念を押すためにも,自分の言葉にして確認をとった。

 正式な契約の締結に時間がかかりそうなので,渡米6カ月後の1969年12月末にいったん日本に帰国した。帰国後,プリンタ付き電卓の具体的なプログラムを組み,命令セットの最終的な確認を行った。一連の作業を終了したとき,答えは“YES”となった。後に説明するが,解決できなかった問題は電卓の桁数であった。

 正式契約は1970年2月6日に結ばれた。プロセッサにNCM-ARU,ROMにNCM-ROM,RAMにNCM-RAM,SRにNCM-SRの名が付けられ,各LSIの機能の概要が定義された。開発費は6万ドル,各ROMのマスク作成費用は2,000ドル,CPUの価格は19.5ドル,ROMとRAMは13ドル,SHRは2.15ドル,信頼性の目標として1,000時間のOperating Life Testで0.01%以下の不良率,などが決められた。また,開発費の払い戻しによるインテルの4004シリーズの外販許可,ビジコンによるLSI製造の独占権への考慮,インテルは電卓を製造しないこと,インテルは開発に最大限の努力する,などが同意された。3月中旬に,正式に,ビジコンは各LSIの機能仕様書と命令セットの仕様書をインテルに送付した。

 4月初旬に私一人でインテルへ出掛けた。今度の訪問はインテルが設計した論理の確認を行うことだった。

 ところが,またまた,とんでもない迷惑な問題が生じた(次回につづく)。