10進コンピュータとも言えるプログラム論理方式を採用したプリンタ付きIC電卓の開発が,マイクロプロセッサの誕生に結びつくとは誰が予想できただろうか。プリンタ専用LSIを開発したり,入出力機器のリアルタイム制御のプログラム化に失敗したり,2進コンピュータの提案と応用からの要求を融合しなかったりしたら,マイクロプロセッサの誕生は大幅に遅れただろう。CPU「4004」開発回顧録は,一粒の種から出発し,電卓とコンピュータと半導体などの技術を融合しつつ,一歩一歩と,紆余曲折を経て,世界初のマイクロプロセッサ「4004」の誕生へと辿り着いた開発物語である。

 ビジコンは,日本計算器(ビジコン製品の製造会社)製の電卓や機械式手回し計算器,三菱電機のコンピュータMELCOMシリーズと会計機,パンチカードを使って応用プログラムを入力可能な米国ワイリー社のCRT表示付き科学計算用計算器,米国SMCタイプライターなどの製品の販売をしていた。さらに,計算機センターを発足させ,コンピュータや会計機に関するソフトウエア・ビジネスも行っていた。

 電卓はビジネス機器や科学技術計算機器として花形商品となり,日本は電卓の供給基地となった。ビジコンは,OEM先ごとに対応する制御方式としてプログラム論理方式を電卓に導入すべくプロジェクトを開始した。

 1968年4月,プログラム論理方式の電卓の開発を始めた。10月には,メモリーを2つ搭載した16桁のプリンタ付きIC電卓162Pの試作機が完成した。

 マイクロプロセッサ誕生の背景の話なので,専門的で大分難解な話になる。電卓は,コンピュータと同じく,入力装置,出力装置,処理装置,メモリー装置で構成される。処理装置はデータパス部と制御部で構成される。データパス部は図1のプログラム論理方式を採用した電卓のALU & Register Unitに相当する機能であり,制御部はProgram Unitに相当する機能である。

図1●プログラム論理方式を採用したプリンタ付きIC電卓のブロック図
図1●プログラム論理方式を採用したプリンタ付きIC電卓のブロック図
[画像のクリックで拡大表示]

 ワイヤード・ロジック制御方式の電卓におけるデータパス部は,シリアル型4ビット主演算回路,累計器であるアキュムレータ,キーボード入力兼演算用レジスタ,乗除算用レジスタ,データ用メモリーなどのリソース(資源)で構成される(参考記事)。制御部の論理には,電卓機能手順論理,計算手順論理,入出力機器制御手順論理,メモリー・アクセス手順論理などがある。制御部の実装は,キーボード入力情報,逐次制御カウンタ,タイミング回路,フリップフロップなどの順序回路,ANDやORなどの組み合わせ回路などを使って,手順論理を構築し,各種の制御信号(最近のマイクロプロセッサに使われているマイクロ命令に相当)を生成し,データパス部に発行する。データパス部では,受け取った制御信号を使って,アキュムレータ,キーボード入力兼演算用レジスタ,乗除算用レジスタ,データ用メモリー,主演算回路などのリソースを使い,指定された演算を実行する。

 IC電卓では,揮発性のシフトレジスタLSIを,アキュムレータ,キーボード入力兼演算用レジスタ,乗除算用レジスタ,データ用メモリーなどに使用した。また,1ビット単位でシリアルにデータを処理し,主演算回路を簡単化した。

 2進化10進符号を使った10進数1桁は4ビットの2進符号で表される。10進数1桁の加算は,まず,4ビットの2進数加算として最初の全加算器で1ビットずつ加算を行い,中間演算結果である16進データを4ビット・レジスタに格納する。次に,中間演算結果を使って補正データを生成し,2番目の全加算器で中間演算結果を補正することにより,10進数1桁の加算を実現する。

 16進データから10進データへの補正は,中間演算結果が9以下であれば中間演算結果に“0”を加算し,中間演算結果が10以上または桁上げ(キャリー)があれば中間演算結果に“6”を補正データとして加算して実現する。また,中間結果が10以上または桁上げがあれば,次の桁へのキャリーをセットする。

加算例:
10進数の入力データを2進数として演算(9 + 5 = 14)
→ 16進データ(14)
→ 10進補正(14 + 6 => 16 + 4)
→ 桁上げと4
(減算例の説明は難しいので次回以降に説明)

 プログラム論理方式は電卓の制御部の一部で採用した。具体的には制御部の「計算手順論理」と「電卓機能手順論理」の部分で,これらはOEM先や機種ごとに異なることが多かった。

 例えば,平方根演算機能の追加,計算の桁数,小数点機能(浮動/固定の選択,固定であれば少数点以下の桁数と演算結果の四捨五入/切り捨て),電卓の演算方式(代数方式:学校で教える算式,例:a - b + c =,そして,米国の電動加算器方式:数字の次にファンクションキーを押す方式,例:a + b - c + = または = の代わりにSub TotalかTotalキー。手回し計算機も加算機方式である),按分比例計算,パーセント計算,定数計算,伝票計算などは,機種やOEM先によって要求が異なる場合もあった。それらの機能はプログラム(ソフトウエア)の変更だけで実現できそうだった。したがって,プログラムで柔軟に変更を施せるプログラム論理方式を電卓に導入しようとした。

 一方,同一の電卓シリーズであれば,キーボードやプリンタなどの入出力機器制御などは仕様の変更がない。また,プログラム化の経験もなく,プログラムでの実現は難しそうだった。したがって,入出力機器制御は従来からのワイヤード・ロジック制御方式で実装した。

 10進コンピュータとも言える電卓用プロセッサの実装には1961年に開発され「論理の時代」をもたらした集積回路の代表であるTTL(Transistor Transistor Logic)を用いた。TTLは当時の集積回路の代表だった。16桁のプリンタ付きIC電卓162Pは,電卓用プロセッサ,プログラム用の読み出し専用マスクROM(Read Only Memory)メモリー,データ用メモリーであるシフトレジスタ,入出力機器制御などで構築した。

 開発した電卓用プロセッサは,8ビットのプログラム・カウンタと命令レジスタ,シリアル型4ビット主演算回路(2セットの1ビット全加算器,4ビット・レジスタAR,10進補正回路),1セットのアキュムレータ兼演算兼キーボード入力用データ・レジスタX(1ビットの符号フラグXS,16桁分の64ビット・データ・レジスタX,4ビットのSRレジスタ),1セットの演算用データ・レジスタY(1ビットの符号フラグYS,16桁分の64ビット・データ・レジスタY,4ビットのCRレジスタ),1セットの16桁分の64ビット・乗除算用データ・レジスタZ,小数点演算命令で利用する2セットの5ビット・レジスタDPXとDPY,制御用フラグF1とF2などで構成された10進コンピュータであった。

 フラグF1とF2は前に押された機能キー情報(+,-,X,÷)などの格納するフラグである。DPXとDPYはXとYに対応する小数点レジスタ,SRレジスタはXレジスタの演算時の桁上げ結果と左シフト/右シフトの入力/出力データを格納するレジスタである。CRレジスタはYレジスタの演算時の桁上げ結果と左シフト/右シフトの入力/出力データを格納するレジスタであり,かつ回数などカウントする汎用カウンタである。

 命令長は8ビットとした。データ・タイプは,n桁の10進データと,カウンタや条件付分岐命令で利用する4ビットの2進データ,小数点演算命令で利用する5ビットの2進データなどであった。アドレス指定方式として命令内でアドレスを直接指定する方式を採用した。命令セットは,データ転送,データ交換,即値格納,クリア,10進データ加減算,2進データ演算,インクリメント/デクリメント演算,シフト,分岐,条件付分岐,フラグ操作,プリント・データ出力用プリント(PRINT)命令など,23種類を用意した。この23種類の命令で,計算手順論理と電卓機能手順論理の様々な機能を実現した。

 400KHzの動作周波数を使って,16桁のデータ演算であれ4ビットの小数点演算であれ,1命令の実行時間は34マイクロ秒であった。電卓としての最大演算時間は,プリント時間を除いて,加減算で2.5msec,乗算で20msec,除算で30msecだった。

 プログラム・ステップ数は,もっとも複雑な平方根演算を含めて256以下に収まった。命令は,当初,マイクロオーダー(Micro Order)と名付けられた。

 プログラム論理方式の導入により,プログラムの一部を変更することによりNCR社向け電卓などが開発された。また,開発工数の削減により開発期間が短縮され,生産在庫も減少した。10進コンピュ-タを使ったプログラム論理方式は,電卓の機能の実現や変更,追加に対して柔軟性があり,新世代の論理方式となった。

 TTLの使用数を抑えるために,データ用メモリーには小数点用レジスタはない。したがって,メモリー使用時には,固定少数点計算のみが有効となる。ただし,乗除算は浮動小数点で行われ,積や商の途中結果は小数点位置に拘束されずに,+,-,= キーが押されると,演算結果が小数点指定位置に合わされる。少ない数の制御用レジスタ(SR,CR,F1,F2)を使って,命令セットを考案するのは難しい作業であった。電卓の機能充実や制御部の汎用化にはLSI技術が必須となってきた。

 トランジスタを使った「回路の時代」ではなく,集積回路を使った「論理の時代」の時代にプログラム論理方式の電卓を開発できたことが私の未来をも変えた(関連記事「時代を切り拓いた技術とシステム構築技術の進展」)。

 いよいよ,次世代の電卓は大規模集積回路(LSI)とプログラム論理方式で開発される時期に突入した(次回につづく)。

図2●プログラム論理方式を採用したプリンタ付きIC電卓 ビジコン162P
図2●プログラム論理方式を採用したプリンタ付きIC電卓 ビジコン162P
[画像のクリックで拡大表示]
図3●プログラム論理方式を採用したプリンタ付きIC電卓の回路図。左側にProgram Unit(制御部),右側にALU & Register Unit(データパス部),上部にTiming Unitが描かれている
図3●プログラム論理方式を採用したプリンタ付きIC電卓の回路図。左側にProgram Unit(制御部),右側にALU & Register Unit(データパス部),上部にTiming Unitが描かれている  [画像のクリックで拡大表示]

図4●プログラム論理方式を採用したプリンタ付きIC電卓の基板の一部。上側が主演算回路を含むデータパス部の1部。中央の基板が制御部の一部で,金色の2つのパッケージが合計256バイトのROM。右下がシフトレジスタを使ったデータ用レジスタとデータ用メモリーの基板。左下がキーボード制御部の基板
図4●プログラム論理方式を採用したプリンタ付きIC電卓の基板の一部。上側が主演算回路を含むデータパス部の1部。中央の基板が制御部の一部で,金色の2つのパッケージが合計256バイトのROM。右下がシフトレジスタを使ったデータ用レジスタとデータ用メモリーの基板。左下がキーボード制御部の基板  [画像のクリックで拡大表示]
図5●プログラム論理方式を採用したプリンタ付きIC電卓のプログラムの一部
図5●プログラム論理方式を採用したプリンタ付きIC電卓のプログラムの一部
[画像のクリックで拡大表示]