コンピュータの歴史を暗部も含めてていねいに掘り起こすことで定評のある大原雄介さんによる新連載。テーマは、今となっては知る人も少ないマイナーCPUです。第3回は、National Semiconductorシリーズの最終回。ようやく32bitに行きます。
NS(National Semiconductor)三題話の最後は、NS 32000シリーズである。
NS自身は1981年に売上高が10億ドルを超えた最初の半導体メーカーとなったが、その足元は急速に崩れていく。前回も書いたが、当時CEOだったCharles E. Sporck氏は、標準的な製品を他社より安価に出荷することでアメリカの市場を握った。
実際この時期にGE(General Electric)とWH(WestingHouse)の2社は半導体市場から撤退している。そうしたこともあって1981年には大きく業績を伸ばした同社だが、標準的な製品は別にアメリカでなくても製造できるわけで、結果人件費の安いアジア(含日本)で製造された、更に安価な標準品が海外から急速に流入するようになると、同社の業績は急速に悪化した。
加えて同社は革新的な新製品よりも安価な標準品に重点を置いた結果として、エンジニアはやる気をなくした。1981年にはSporck氏の片腕としてCTO兼General Managerを務めていたPierre Lamond氏や、アナログICの優秀な設計者でLinear Technologyを創業したRobert Swanson氏や、同じくアナログICの設計者で、一度1970年に引退したものの1974年にコンサルタントという立場で戻ってきたBob Widlar氏などが、一斉に辞任している。この結果、同社は更に安価な競合製品に押されつつ、状況を打開する新製品が乏しいという負のスパイラルに陥っていく。
こういう状況でプロセッサを開発していたというのはなんとなく辻褄が合わないのだが、既存の標準品にあたるマーケットが存在しなければ、新製品の開発には比較的寛容だったのだろうか?
1981年のISSCCで同社は32bitのMPUとしてNS16032/NS16082を発表する(Photo01)。
▲Photo01:外部バスはアドレス/データ多重方式のため、48pinのDIPパッケージでピン数は収まった。製造プロセスは3.5μm NMOSで、ダイサイズは約290平方mil(≒54.8平方mm)、トランジスタ数は6万個である
NS16032の内部は8/16/32bitの整数演算のみを扱うALUが搭載されており、ただしMMUは外付け(NS16082)。パイプラインは3段で、デコードは全命令Microcodeを利用している。ほとんどの命令は1~2cycleでデコード可能で、動作周波数は10MHz。つまり最小でも4cycleほど実行に掛かる計算である。内部的には32bitアドレッシングだが、外部へのアドレスバスは24bit、データバスは16bitになっていた。設計開始は1980年で、1982年4月には最初の製品がサンプル出荷されている。
もっとも最初のサンプルや、1983年に出たNS16008(外部データバスを8bitにしたバージョン)とNS32032(外部データバスを32bitにしたバージョン)はまだ6MHz駆動がやっとで、10MHz駆動する様になったNS32032-10がリリースされたのは1984年2月のことである。
ついでに言うと、1983年には製品名もNS160xxからNS320xxに改称された。というのはNS160xxだとまるで16bit CPUだと誤解されてしまうから、ということらしい。NS32032では外部のデータピンが増えた関係で、パッケージも48pin DIPから68pin PLCCに変更されている。あと、NS32032がリリースされたタイミングで、FPUであるNS32081も発表された。
ちなみに10MHz駆動のNS32016の性能は2.5MIPS程度とされている。この数字は1980年に発表されたMC68000(8MHz駆動で概ね1MIPS)より良好であり、それもあって発表当初はかなり注目を集めた。アーキテクチャに関しては米BYTE誌1983年10月号でMichael Tilson氏が、NS16032ベースのワークステーションにUNIXを移植した(この移植されたUNIXは1982年のCOMDEXでデモされたそうだ)経験を元に、DECのVAXに非常に近いとしている(VAX上で動いていたUNIXの移植が、当時の他のCPUに比べて非常に容易だったそうだ)。
もっともVAXの命令セットは直交性があるとはいえ結構複雑で、アドレッシングモードが7つもあるという、ある意味CISCの極致であって、これをこのままインプリメントするのは無謀というか意味が無い。実際命令セットそのものを比較して見てみても、似ているとは思うがだいぶ簡潔化されたものだし、アドレッシングモードの数も少ない(あと浮動小数点演算命令とかキュー操作命令、CRC命令なども省かれていた)。VAXを参考にしたとは思うのだが、そこまで同じかと言われると「?」である。
それはともかく。さてこれがそのまま動けば良かったのだが、実際には膨大なバグリストが存在し、しかも6MHz動作品がまともに6MHzでは動かなかったらしい。2年後の1984年の時点でも、まだバグリストは結構長かった。一部のバグは、その状態に陥るとリセットしか回復手段がないというもので、こうしたバグが広範な採用を妨げる大きな要因になった。
Photo02でISSCCにて発表されたDie Photo(左)とWikipediaに上がっているNS16032SD-6のDie Photo(右)を比較すると、大きな構成はほぼ同じだが細かい配線を見てみると随所に違いが見られる。多分バグ対策で細かい修正がかなりあったのだろうと思われる。
▲Photo02:右写真は"Die shot of National Semiconductor 16032 microprocessor (NS16032SD-6)." by Pauli Rautakorpi is licensed under CC BY 3.0
NSがこの問題に手こずって高性能版の開発に着手できずにいる間に、ライバルは追いつき、そして追い抜いていった。1984年にはMotorolaがMC68020を、1985年にはIntelが386DXをそれぞれ投入する。性能の面で、NS32016/32032がこれら競合と戦うのはかなり厳しいものがあった。
さらに1985年にはSunがSPARC 1を、1986年にはMIPSがR2000をそれぞれ発表。このあたりから32bit CPUの性能は2桁MIPSが当たり前になっていき、この流れに乗れないチップは全部脱落していく。
これはNS32032も同じであった。NS32032を採用した有名なメーカーとしては1983年創業のSequent Computer Systemsがあるが、ここは第一世代のBalance 8000/Balance 21000でNS32032ベースのシステムを提供していたが、第二世代のSymmetryではIntel 386ベースに変わってしまった。
という訳で、掴みかけていたマーケットを逃してしまったNS32032であるが、ここからの粘り腰がまたもやNSらしいというべきか。ここから同社はNS32032をベースにどんどん改良と派生型の開発をスタートする。まずメインストリームというか、正当進化の方向である。まずNS32032そのものをCMOSで製造したバージョンであるNS32C032が、1985年末頃に登場する。こちらは最大15MHzまで動作周波数を引き上げ可能になった。
次はNS32132であるが、実はちょっと遅い1986年である。このNS32132は、NS32032をベースにDual Processorの機能を追加したものである。NS32032には未使用のpinが3つあり、これを利用して2つのProcessor間の同期を取る仕組みが追加された。ただマーケットではNS32232やNS32332の方が好評だったようで、1988年には早くも製品リストから消えている。
NS32032からのマイナーバージョンアップが、1984年にリリースされたNS32232である。こちらはMicrocodeを改良して性能を引き上げたのが主な違いで、逆にハードウェアそのものはNS32032のままである。
そのNS32232のメジャーバージョンアップが、1985年に発表されたNS32332である。Microcodeが更に改良されたほか、アドレス計算周りをハードウェア化した事で、ALU命令などが高速化された。また20Bytesの命令プリフェッチバッファを追加されている。ついでにこの世代でFPUとMMUもそれぞれNS32381/NS32382に切り替わり、こちらも高速化に寄与している。トータルで、NS32232と比較して50%ほど性能が向上したとしているから、かなり馬鹿にならない数字である。
また外部のAddress Busも32bit化され、最大4GBのメモリが利用可能となっている。当初は2.8μmのNMOSプロセスで10MHz駆動だったが、のちに15MHz駆動の製品が追加で投入されている。ダイサイズはちょっと増えて87.87平方mmに大型化した。
当然次はNS32432ということになる(実際にはCMOSバージョンのNS32C432だった模様)だが、こちらは途中でキャンセルというか、続くNS32532に切り替わったようだ。後継のNS32532は1987年に発表された。こちらは4段のパイプラインになり、512Bytesの命令キャッシュと1KBのデータキャッシュを搭載。MMUも内蔵された。加えてメモリアクセスの際にBurst Modeのサポートも追加されている。プロセスは1.25μmのCMOSとなり、動作周波数も20/25/30MHzと向上。この30MHz版は、10MHzのNS32032の概ね10倍の性能とされている。つまり25MIPSで、やっと2桁MIPSクラブの仲間入りを果たした格好だ(Photo03)。
▲Photo03:NS32532のデータシート表紙。総トランジスタ数は37万個。うち13万個がキャッシュ、3万個がMMUに使われた。ダイサイズは161平方mmと巨大に
このNS32532を利用した、今でいうところのOpen Hardwareとして開発されたというか作り上げられたものがPC532である(Photo04)。
▲Photo04:30pin SIMMがいい味を出している。画面出力は見当たらないが、USARTは搭載されていたのでシリアルポート経由でターミナルからログインする格好だ。出典は"The Web Site to Remember National Semiconductor's Series 32000 Family"の"PC532".
これはGeorge Scolaro氏とDave Rand氏の2人が設計したNS32532ベースのBaby AT互換マザーボードで、NetBSDが移植された。最終的に150枚ほどのPC532ボードが世に送り出されたらしい。更にその後継のPC532Eというボードもあったそうだ。ただあくまでこれはホビイストが自作したものであって、広範に利用されたものではない。
NSもRISCへ
さて、NS32532の後継製品の情報が出て来たのは1991年のことである。
同年8月に開催されたHot Chips 3で同社はSwordfishというコード名の64bit RISCプロセッサを発表した(Photo05)。
▲Photo05:Hot Chipsでの配布資料。ALUとFPU、それにDSPを積んだ中々の構成
ちなみに設計者はDonald Alpert氏だが、1985年まではZilogでZ80000のアーキテクトを務めており、NSでは同社のNSAT(National Semiconductor Tel Aviv:イスラエルにある同社のデザインセンター)でNS32532とSwordfishの開発に従事。その後Intelに移籍してPentiumのデザインに携わることになった。内部はSuperScalar構成(流石にOut-of-Orderの実装はまだで、In-Orderのまま)で、整数演算×2、FPU×1、DSP×1である。初期のプロトタイプチップは50MHzで駆動され、100MIPSの演算性能を誇った。DSPを利用すると32bitの乗算が1cycleで実行可能という、なかなかの構成である。
このSwordfish、当初はNS32732ないしNS32764という型番になる予定であったが、これも途中で変更になったようで、NS32SF640/NS32SF641という型番が割り当てられた。実際にこの型番をシルク印刷したチップがComputer History Museumに収録されている。NS32SF640とNS32SF641の違いはFPUの有無で、NS32SF641の方にはFPUが搭載されている(Photo06)。
▲Photo06:1992年3月付のDatasheet。この時点ではまだSwordfishを販売する気が満々だったのが判る
さてそのSwordfishだが、残念ながら最終的に製品化は見送られた。理由は高コストすぎることだ。Swordfishは0.8μmのCMOSプロセスで製造されたが、トランジスタ数は100万個、ダイサイズは250平方mmにも達した。当時のことだからまだウェハーは200mmですらなく150mmのものが使われたが、ウェハー1個から取れるチップの数はわずか53個。なにしろ当時のことだから歩留まりはそんなに高くない訳で、さすがにこれは量産するには厳しい数字だった。
ちなみに同じ1991年に発表された(出荷は1992年)チップにはMIPSのR4000がある。こちらもIn-OrderながらSuperScalarの64bit MPUであるが、こちらのダイサイズは1μmプロセスでも213平方mm、0.8μmだと165平方mmに過ぎず、如何にSwordfishがデカかったかが判る。
ベンチマーク結果として示された数字はなかなか良い(Photo07)ものだった。
▲Photo07:例えば100MHz駆動のR4000のDhrystoneのスコアは105633.8だったから、12万という50MHz駆動のSwordfishのスコアからするとかなりの性能が期待できたことになる
ただ1991年というのは既にRISC WorkstationやRISC ServerのマーケットはSPARC/MIPSなどが大勢を占め、後発のMC88000は既に市場を掴めずに苦闘していた時期である。ここにSwordfishを投入したところでマーケットは取れないと判断したためか、最終的に製品化はなされず、ここでNS32016から始まる直系製品は打ち止めとなった。
ただし組み込み向けマーケットにはまだ参入の余地があるとされた。というのはNS32016やNS32032がまさにそういう用途で広く使われていたためである。これに向けて最初に投入されたのが1988年のNS32CG16とNS32CG160である。
これはレーザープリンタ制御用に向けた製品だ。NS32CG16はNS32016をベースにしたものだが、仮想メモリのサポートを外し(なのでMMUは必要なくなった)、グラフィックアプリケーション向けに11命令を追加、更にこれまで外付けだったNS32201 TCU(Timing Control Unit:クロック供給)を内蔵して低コスト化を図った。動作周波数は15MHzである。このNS32CG16の動作周波数を25MHzに引き上げると共に、16bit×16bitのハードウェア乗算器を追加したのが、1992年に発表されたNS32CG160となる。この2製品はどちらもデータバスは16bit幅である。
次に続くのはNS32532の低コスト版であるNS32GX32で、1991年に発表された。低コスト版と言っても仮想記憶のサポートを外しただけである。データバスは32bit化されている。また製造プロセスそのものは0.8μm CMOSに移行した。このNS32GX32はプリンタコントローラとしてそれなりにシェアを獲得できたため、これをベースに更に改良を加えたのが同じく1991年に投入されたNS32GX320である。
具体的には2chのDMAコントローラと15レベルの割り込みコントローラ、それと3つの16bit Timerが追加されている。また若干命令が追加された。これはいずれもDSP命令に関係する部分である。
次にNSが狙ったのはFAX用のマーケットである。ここに向けて1991年に発表されたのがNS32FX16である。こちらはNS32CG16に近いが、最大の違いはDSPを内蔵していることで、これを利用してモデム機能をソフトウェアで実装できた。
またDSPのために384BytesのSRAMも内蔵している。製造プロセスは1μmのCMOSで、最大動作周波数は25MHz(外部クロックを利用すると50MHz駆動も可能)だった。これの改良版が1992年発表のNS32FX161で、製造プロセスを0.8μm CMOSに変更し、SRAMを4KBまで増やしている。DSPの性能を上げることで、より高速なモデムを実現することが可能になった。
このNS32FXシリーズをベースに、自動電話応答システム向けに開発されたのが1992年発表のNS32AM16xである(何バージョンかあったらしいのだが、全部で幾つあったのかは不明)。こちらはDSPに加えて、32KBのROMを内蔵。このROMの中に音声データを格納することで、音声自動応答システムが簡単に構築できるようになった。ただFAXと異なり別にbitmapを取り扱う必要は無いので、これに関係する部分は削られたらしい。
最後となるNS32HT160は、特定顧客向け(フランステレコムのMinitel 4というビデオターミナル)に利用されたスペシャル版で、NS32FX16をベースとしながら、2MbitのSDRAMのI/Fが追加され、これを利用してのビデオ表示機能が追加されたものである。こちらは1997年にリリースされた。
このNS32000ファミリーは、2000年まで製品が供給されていた(いくつかの組み込み向けはもう少し後まで提供されていたが)。ただ同社はSwordfishの経験を元に、16bitのCR16/CR16Cと32bitのCRXという2種類のRISCコアを開発し、これをベースとしたMCUを2001年よりNS32000シリーズに代わって展開していくことで、ひっそりとNS32000シリーズは市場から退場していった。