コンピュータの歴史を暗部も含めてていねいに掘り起こすことで定評のある大原雄介さんによる新連載も4回目。前回までのNational Semiconductor編が終わり、今回はシリコンバレーの始祖的な存在であるFairchild Semiconductorが作ったCPUのお話です。
Fairchild Semiconductor(以下Fairchild)は、シリコンバレーのさまざまな会社の祖となったと評されることが多い。
ただそれはFairchildから暖簾分けをしたのではなく、Fairchildに不満があったなどで、辞めて起業した会社が大きくなったという辺りが、Fairchild自身にとっては救いのない話ではある。
もっとも、そのFairchildそのものが、Shockley Semiconductor Laboratory(トランジスタの発明でノーベル賞を受賞したWilliam Shockley博士が所長となった企業)から離脱した8人("Traitorous Eight"、8人の裏切り者と呼ばれる)が興した会社であることを考えると、歴史は繰り返すと言った方が正しいのか?
ちなみにFairchildから離脱して興された企業のうち、最大のものがIntelであるが、他にも元Fairchild社員が辞めて起業したとか、元Fairchild社員が参加して大きくなったという企業は多く、その意味ではシリコンバレーの祖であったことそのものは疑う余地はない。
そんなFairchild Semiconductor、1960年台末には主要なエンジニアが全て逃げ出していた。なんせ最後に逃げ出したのがIntelを創業したRobert Noyce博士とGordon Moore博士で、2人はついでにAndrew Stephen Grove("Andy" Grove)氏とFederico Faggin氏を同社から引き抜いている。
業績は1967年以降、下降を続けていた。こうした状況を鑑みて、取締役会(というか同社の親会社にあたるFairchild Camera and InstrumentのオーナーであったSherman Fairchild氏)はMotorolaの半導体部門のVPだったClarence Lester Hogan博士をCEOとして招聘する。このHogan博士の元でFairchildは再建の路を歩むことになる。
ちなみにこの移籍に伴いHogan博士は管理職クラスの人間をMotorolaからごっそりと引き抜いてFairchildの経営陣と入れ替え、これが理由でMotorolaは同社を訴えるものの敗訴している。Hogan博士は1973年には辞任(ただし副会長としては残った)するから、彼が同社に影響を及ぼした時期そのものはそう長くないのだが、その短い間にCPUに関しては重要な決断を下していた。
Intelは1971年にIntel 4004、1972年にはIntel 8008をリリースするし、Motorolaは1974年にはMC6800を発売するが、その前にMC5065という最終的にリリースされなかったCPUを開発している(この話は後で繋がる)。AMDは1975年にAm2900を発売している。Mos Technologyの6502もやはり1975年だ。
要するに1970年というのは、さまざまなメーカーがマイクロプロセッサの開発に着手した(or着手しようとしていた)年である。
こうした動きはFairchild SemiconductorというかHogan博士も当然理解していた(なんせMotorolaの半導体を統括していたのだから、理解していなかったらおかしい)が、当時同社にはそれを可能にする設計リソースはなかった。
そこでHogan博士はDavid Chung博士を雇い入れる。Chung博士はHoneywellのH800(48bitコンピュータ)の設計チーム→IBMでIBM 360のECL回路の設計担当→United Technologiesで軍用コンピュータの設計チーム→GI(General Instruments)でマイクロプロセッサの設計担当というキャリアを歩んできた。
GIは当時マイクロプロセッサは保有しておらず、ドイツのOlympiaというタイプライターと計算機のメーカーが開発したマイクロプロセッサのライセンスを受けて製品化を目論んでいた。Chung博士はまさにこの担当者としてドイツまで行ってアーキテクチャを学んだ後でGIを退職、Fairchildでマイクロプロセッサの開発責任者となる。
冷静に考えると割と酷い気もするのだが、これが大問題になったという話も聞かないし、GIは1970年から大規模レイオフを何度か実施していたから、それに紛れて……という話なのかもしれない。とにかくFairchildはこれでマイクロプロセッサのアーキテクトとしてChung博士を獲得、彼が設計したのがF8(発音は"エフエイト"というよりは"フェイト"に近い)である。
F8は、まだ当時の製造技術の限界もあり、1チップで完結させるのは不可能で、最低でも2チップから構成された(Photo01)。
▲Photo01:I/Oポートが異様に豊富なのもF8の特徴である。パッケージの大型化を防ぐために、CPUとPSUの両方にI/Oポートを用意してピン数を稼いだものと思われる
3850(CPU:Central Processing Unit)と3851(PSU:Program Storage Unit)の構成である。ただこれは本当に最小構成であって、実際には3852(DMI:Dynamic Memory Interface)か3853(SMI:Static Memory Interface)と3854(DMA)の4チップ構成になるとされていた。
まぁこれを分離するのは判らなくもないのだが、ちょっと尋常ではないと思うのが、CPUには命令デコードの機能がないことだろうか。
Photo02はその3850と3851の内部構造である。
▲Photo02:3850がCPUと言っているが、"Central"の名前はむしろ3851の方に相応しかった気もしなくはない。実際CPUがCPUたる機能である実行制御は3851の方が担っていた訳で、3850は単なるALUである
3850にはALUとAccumulator、64byteのScratchpad RAM「しかない」。なにせPC(Program Counter)すらないのだ。これはもうどっちかというとCPUというよりはWeitekが出してたFPU Accelerator Chipに近い。要するに実行制御などは一切行わず、リクエストが来た算術演算だけを実施してその結果を出力する、という代物だ。
では命令制御とかはどこでやるか?というと3851の方になる。こちらはROMに加えてPCやらStack RegisterやらData Counterやらと、実行制御に必要な要素が揃っている。厳密に言えばStatus Registerの方は3850の方に入っているので、演算結果を見て分岐という場合には3850のStatus Registerの結果を3851に持ってきてから判断を行うことになり、条件分岐の処理が恐ろしく遅そうな気もしなくはないが。
それともう一つ、Photo01と02を見て気づいた点はないだろうか?
3850/3851のどちらも、外部にアドレスを出すI/Fがないのだ。内部的にはちゃんと16bitのAddress Busが(PSUには)あり、それを利用してプログラムコードはROMから読み取ったり処理中の変数等をScratchpadとやりとりしている(ちなみにCPU内部にはAddress Busがない!)が、それが外部に出力されていないというかなり変な構成なのである。
では外部にメモリを接続したい場合はどうするか?というと、3852/3853を併用することになる(Photo03)。
▲Photo03:DMAコントローラである3854にもAddressユニットが搭載されているが、こちらはメモリコントローラの機能はなく単にアドレスを出すだけだから、3852なり3853は絶対に必須であった
Memory Controllerの中にAddress Generatorがあるというのも不思議な仕組みだし、何かの理由でDRAMとSRAMの両方を使いたいときとかに大変そう(PCとかStack Register、Data Counterの同期を取る必要がありそう)という気がする。
何というか非常に不思議な構成であるが、これがもともとOlympiaの設計であり、Olympiaはこれを利用して電卓を作りたかったということを考えるとまぁ判らなくもない。通常の電卓であれば64BytesのScratchPadと1KBのROMがあれば十分実現できるから、そもそも外部にメモリを搭載する必要がない。その割にI/Oポートが多いのも、こうした用途を考えれば納得できる。
Photo04は簡単な電卓の構成例であるが、一応の合理性はあるとは思う(が、他にも色々やりようはあったような気も)。
▲Photo04:電源は-5Vと-12V。それとは別に115V60HzのACをExternal Interruptに入力している理由が今一つ不明。PoR(Power on Reset)をこれで実現させたのだろうか?
もちろん高機能な電卓を構成しようとすればこれで足りないことはありえるが、そうした製品は販売価格が上がっても問題ないから、その場合はSMIなりDMIを外付けにしてアクセスできるメモリ領域を増やす、という訳だ。合理的と言えば合理的だが、汎用的に使いにくい構造ではある。
ALUやAccumulatorは8bit幅で、Address幅は16bitである。なのでアドレス指定時はレジスタのUpperとLowerを別々に指定する(例えばPCとかStack Register、Data Counterなどは上位8bitと下位8bitを別々にアクセスできる)か、Implied/Short Immediate/Long Immediate/Indirect Register/Indirect Memory/RelativeなどのAddress指定モードを利用する必要があった。
ちなみにDirect Addressingもあるが、これは入出力ポートを利用してのI/O用とされている。命令数は60と70という2つの数字があるが、LOAD命令とSTORE命令が複数あるので、この重複をまとめて数えるか別々のものと数えるかの違いだろう(Machine Codeは異なっている)。入力クロックは2MHzなのでcycle timeは0.5μsecほどになるが、F8は全ての命令が2μsecで実行可能という説明なので、1命令の処理に4cycle掛かっている計算になる。まぁそこそこの性能、というべきだろうか。
さてFairchildは1974年9月にF8を発表するが、ここで横槍を入れて来たのがGI社である。どう見てもF8はOlympiaの開発したプロセッサの派生型であることは明白で、これは本来GIがライセンスを得て、しかもChung博士を派遣して獲得した技術である。
Chung博士の引き抜きはともかく製品の横取りまでは許せないとGIが考えるのも無理はなく、1976年初頭にGIはFairchildを訴える。これに対しFairchildはOlympiaからプロセッサのライセンスを取得するという形で対抗。訴訟そのものはこの後も続くが、実質的にはこのプロセッサライセンスを得たことで、Fairchildは大手を振ってF8を販売できることになった。
これに先立ち、FairchildはF8のセカンドソースライセンスをMostekに提供する。Mostekの話は次に説明するとして、それとは別にFairchildはF8をベースとしたVES(Video Entertainment System)と呼ばれる家庭用ゲーム機をF8ベースで開発(Photo05)。
▲Photo05:By Evan-Amos - Own work, CC BY-SA 3.0
後にChannel Fと改称されるこのゲーム機は、1976年に北米で169.95ドルで発売され、1979年までに35万台ほどが販売されたらしい。ただこれは1977年にAtariが発売したVCS(累計で3000万台販売された)の敵ではなかった。その他の用途に向けてのF8を販売する努力も、あまり結果には繋がらなかった。
F8、Mostekで第2の人生を歩む
なのだが、ここからF8の第2章が始まる。それはMostek 3870である。Mostekという会社(ちなみに6502を開発したMOS Technologyとは別の会社である)は、Intelと共にビジコンの電卓向けICの開発を打診され、Intelの4004とほぼ同時期にMK6010を開発している。
ただIntel 4004は4bitの汎用CPUだったのに対し、MK6010は計算機専用ICで、他の用途には利用できなかった。MostekはこのMK6010に続き、MK5000シリーズやMK6000/6100/6200シリーズを多数ラインアップするが、いずれも汎用CPUではない。当時の同社の主力製品はDRAMであり、そもそもMostekの創業者の一人であるRobert Proebsting博士はDRAMのアドレスをRow/Columnに分離して多重化するという技術の発明者である。同社のMK4096という4Kbit DRAMが大きな売り上げを占めており、続いて16KbitのMK4116なども投入している。
これとは別にMostekのビジネスのそれなりに大きな比重を占めていたのが、CPUのセカンドソース生産である。最初のものがMK5065で、これはMotorolaのMC5065のセカンドソースである。MC5065はOlivettiの電卓向けに作られたCPUであり、CPU用のICを多く手掛けていたMostekとしては相乗効果が期待できると考えたのかもしれない(が、残念ながら成功したとは言えなかった)。
これに続くのがMK3850で、これはFairchildの3850/3851/3852/3853/3854をそのままセカンドソース生産しただけのものである。ただこれに続くMK3870が大きく売れることになった。1977年に発表されたMK3870(Photo06)は、3850+3851をワンチップ化したのみならず、
・5V単一電源で動作
・内蔵ROMのサイズを0/1KB/2KB/3KB/4KBにバリエーション拡充(マスクROM)。後にはEEPROMに対応したMK38P70も追加。このMK38P70ではアドレスバスを外部に出力可能となった(ちなみに12bitアドレス版と16bitアドレス版が存在する)。もっとも外部出力といってもEEPROMだけで、SRAMなりDRAMなりを繋ぐには別途SMIなりDMIが必要であるが
・消費電力を平均275mWに下げた
等の違いがある。
▲Photo06:MK38P70の方は、ピギーバッグ式にCPUの上にEEPROMを載せる(のでEEPROM用ソケットが用意されていた)関係で、チップの外にMemory Address Busを引き出している。理屈から言えば、なのでEEPROMのソケットからアドレスバスを引っ張る事も出来るのだろうが、肝心のメモリコントローラが無いから、素直にSMIなりDMIを使った方が楽である
このMK3870は、広く利用された。Flukeの8050AとかHPの5315A/Bや5316A/B、HeathkitのOCW-1401という航空機のナビゲーション用コンピュータなどの採用事例は有名なところで、ちょうど競合していたIntelの8048を上回る販売実績と採用事例を誇っている。
理由の一つはコストの安さである。MK3870ではマスクROMを内蔵していたから、あらかじめプログラムをMostekに送付し、マスクROMに焼き付けてもらうための初期コストが掛かるが、これが1000ドル程と競合に比べて一桁安かった(これを実現するために、MostekではマスクROMを配線層の一番上に配している。これによりマスクROM層だけを積層すればチップが完成した)。販売価格も競合に比べて安く、これもあって1979年までMK3870は広範に利用された。なにしろFairchild自身がMK3870のセカンドソースをMostekと結んだほどである(Fairchildはこれを3859として販売した)。
余談であるが、MostekはMK3880という製品も持っている。ただこれは全くF8/MK3870とは無関係で、ZilogのZ80のセカンドソース品である。
風向きが変わるのはIntelが1980年に8051を出してからである。より性能が高く、メモリ空間も128KB(16bitのアドレスバスを2本持てた)と広く、周辺回路の集積度もMK3870より高かった。
MostekなりFairchildがこれに対抗してより集積度を上げたり、内部を改善すればまた状況は変わったかもしれない。しかしながらFairchildは親会社であるFairchild Camera and Instrumentが1979年に油田サービス企業であるSchlumberger Limitedに買収され、1987年にはFairchild自身がNational Semiconductorに売却されている。
実際のところ1970年代後半にはFairchildではもう売れるような新製品がほとんど残っておらず、特許使用料のライセンスで命脈を保っていた状況だったが、1980年にはそうした特許が相次いで期限切れを迎えており、F8の改良を施せるような体力は残っていなかった。
Mostekも同様で、1970年代にはDRAMビジネスで大きな収益を上げていたが、1980年代に入るとDRAMの分野での価格競争が激化、急速に業績を落とす。おまけに電子部品メーカーであるSprague Electricの敵対的買収を仕掛けられる(この頃、Sprague Electricもまた海外の安価な電子部品メーカーの攻勢に晒されており、売上こそ伸びたものの利益がどんどん下がっていた。結局同社は1993年にVishay Internationalに買収されている)。
この敵対的買収への防衛策としてMostekはUTC(United Technologies Corporation)に身売りをしているが、UTCもまた激化するDRAMの価格競争に耐えきれず、1985年にはMostek部門をThomson Semiconductor(のちのSGS Tomson:現在のSTMicroelectronics)に売却している。こうした状況では、MostekもまたMK3870の改良に投入できるようなリソースや資金はなかった。結局後継製品がないまま、F8/MK3870は市場から消えていくことになったのも、致し方ないというべきか。