インテルとの共同開発が暗礁に乗り上げそうになった1969年8月下旬の或る日,ホフが突然,数枚のコピーを片手に,興奮気味に,私達の部屋に飛び込んできた。

 ホフが最初に示したブロック図にはプロセッサの骨格だけが描かれていた。その図には

アキュムレータとキャリーを含む4ビットの主演算モジュ-ル
16セットの4ビット汎用レジスタ・モジュール(2つ組み合わせてペアレジスタとして使うと,ビジコン案に盛り込まれていた8ビットのアドレスレジスタとなる)
サブルーチンが3段までネスティング可能なプログラムカウンタを含む4段の12ビット・アドレス用プッシュダウン・アドレススタック・モジュールの3つの箱
キーボードとのインタフェースに使う4本の入力ピン が描かれていた(図1)。

図1●ホフの最初のアイデア
図1●ホフの最初のアイデア
[画像のクリックで拡大表示]

 私の提案は,n桁の10進データを取り扱う,μInstruction命令と名付けたマクロなレベルの命令セット(マクロ命令)を実装した10進コンピュータであった。

 これに対してホフの提案は,1桁という4ビットの2進データを取り扱う,より低いレベルのマイクロな命令を実装する4ビットの2進コンピュータであった。世界初のマイクロプロセッサ4004の“産声”であった。電卓という応用分野からの特異な要求と10進コンピュ-タのLSI化という種ともいえる初期的なアイデアが,4ビットの2進コンピュータという新たなアイデアへと導いた。

 提案されたレジスタ・アーキテクチャはシングル・アキュムレータ&マルチプル・レジスタ・アーキテクチャであった。このレジスタ・アーキテクチャは次世代の8ビット・マイクロプロセッサ8008と8080へと引き継がれた。

 しかし,プロセッサの骨格だけを見せられても,不明瞭な点が多過ぎ,電卓への応用を想像するのは不可能であった。ホフの提案は素晴らしい宝石の原石であったが,カットも磨きも何もなされていない,未だ単なるアイデアであった。

 特に,ワイヤード・ロジック制御方式を使ってハードウエア回路網で組んでいた入出力機器のリアルタイム制御を,ソフトウエアで置き換えることが果たして可能かどうかが疑問であった。また,その疑問の解決への糸口は何も提案されなかった。後はビジコン側で工夫してくれ,といった感じの提案であった。インテル案を採用すると開発を最初からやり直す必要があった。渡米チームにとっては,開発日程を考えると,未知数のあるアイデアに対して大きな好意は持てなかった。

 誤解が生じないように付け加えると,アイデアを生む作業と製品化作業は,研究と開発との関係のように,かなり大きな相違があり,一人の人間が成し遂げることは非常に難しい。異なる人間が担当するほうがより良い結果を生むことができるようである。これは,その両者では発想の原点が異なるためだろう。

 東京のビジコンでは,ホフの基本的アイデアそのものは,マイクロな命令による汎用性という利点があり,非常に高く評価された。解決しなければならない多くの問題はあったが,提案されたマイクロな命令セットを実装する4ビットの2進コンピュータは,システムを設計するための次世代プログラム論理方式となる可能性があると判断し,インテル案を検討することをインテルに伝えた。同時に,渡米チームにホフ案を詳細に検討することを指示した(図2)。

図2●ALUと汎用レジスタのアーキテクチャの比較
図2●ALUと汎用レジスタのアーキテクチャの比較
[画像のクリックで拡大表示]

 4ビットの2進コンピュータの命令セットなど具体的な話し合いを進めて行く内に,少しずつ問題点が明らかになってきた。最終的に,5つの問題点が表面化した。

 1番目の問題点は,LSIのみによるシステムの構築が無視されたことであった。ホフの提案では,標準品のROMとRAMを使用するためにシステム・インタフェース用LSIを新規に開発する必要があり,電卓向け汎用LSIの最も重要な目的であったLSIのみによるシステムの構築を実現できなかった。標準品のROMとRAMは高価すぎ,電卓に大容量のメモリーが使える時代ではなかった。

 2番目の問題点は,提案されたプロセッサでは2進データ用の演算命令しかなく,10進データ用の演算命令がなかった。ホフには,コンピュータに関して,ルックアップテーブルを使って演算機能を実現していたIBM 1620コンピュータとディジタル・イクイップメントのPDP-8ミニコンピュータの経験があった。したがって,メモリーを使って問題を解決する傾向が強かった。しかし,加算後の10進補正命令だけは直ちに追加してくれた。

 3番目の問題点は,電卓向け応用プログラムを組みにくく,さらに悪いことに大量のROMが必要であった。電卓用のマクロ命令という一種の疑似命令をマイクロな命令を組み合わせて作ることは可能である。しかし,単純にサブルーチンを使ってマクロ命令を実現すると,サブルーチンを使うたびに2バイトのメモリーが必要となり,ROMの容量が2倍に増えてしまう。

 プログラミング言語はいつの時代でも重要である。パソコンが誕生したときにBASIC言語が登場し,現在のインターネットの時代を迎えるとJava言語が登場した。どちらも,登場した時は,プログラム中の命令ストリームをネイティブな命令ストリームに翻訳しつつ実行するインタープリタ方式を採用した。電卓にも電卓用マクロ命令があるので,インタープリタ機能を実現する方法を見出さなければならなかった。

 4番目の問題点は,プリンタなどの出力機器と同期をとりつつ,キーボードや表示やプリンタなどの入出力機器をリアルタイムで制御する命令や解決方法などが全く提案されなかった。ビジコン案のプログラム制御LSIと中央演算ユニットLSIを,2進化し,1つのLSIに集積化しただけでは,ROMの個数が増加し,コストの問題を解決できない。

 第5の問題点は,性能,命令セット,ROM容量,使用可能なトランジスタ数であった。アセンブリ言語のような手続き型プログラミング言語は,記述に自由さがあり,ランダム論理回路と同じく,ハ-ドウエア機能を記述するのに適した言語である。マイクロな命令を使えば,性能の低下はあるものの,ハードウエア論理回路網をプログラムで実現することが可能となる。したがって,高性能なプロセッサと豊富なメモリーが使えれば,単純な2進コンピュータのほうがランダム論理回路より優れていることは自明であった。

 ところが,提案されたプロセッサの動作周波数は1MHz以下で,プロセッサの性能は低かった。プログラムを使って,マルチタスクのジョブとして,キーボードや表示やプリンタなどの入出力機器をリアルタイムで制御することに困難さが予想された。また,提案された命令セットはあまりにも基本的なものであり,プログラムのサイズが大きくなり過ぎ,プログラムを格納するROMの数が多くなり,コストの問題が生じた。

 今日のように大容量ROMが使えるような時代ではなく,当時は使用するメモリー容量を如何に小さくさせるかがコスト削減の鍵であった。入出力機器制御をプログラムで行えたとしても,経済的に搭載可能なROM容量は僅か1Kバイト以下であった。また,インテルは,使用トランジスタ数を非常に気にしていて,トランジスタ数を押さえるためには豊富な命令を持たすことを極力避けようとした。

 しかし,インテル側からインテルの持っている最初のカードが出され,いよいよ本格的な交渉ができる状態になった(次回につづく)。