性能は悪くなかったのに不運だった。AT&Tベル研生まれの32bit CISC「WE32000」(人知れず消えていったマイナーCPUを語ろう 第18回)

ガジェット PC
大原雄介

猫に傅くために原稿を書いて日銭を稼いでいる毎日。元は組み込み系のエンジニアだったのに、もうずいぶん遠い所まで来てしまった。

特集

コンピュータの歴史を暗部も含めてていねいに掘り起こすことで定評のある大原雄介さんによる連載18回目。


前回の中でもちょろっと名前が出てきたWE32000シリーズの話を今回はご紹介したい。


このWE32000シリーズ、設計者の一人であるSung Mo(Steve) Kang博士による"First-Hand: The AT&T BELLMAC-32 Microprocessor Development"という記録が残っているので、開発がどう進んでいったのかといったことが判りやすいのは正直助かる。

元々AT&T Bell Labは1970年代に入り、BELLMACシリーズと呼ばれるプロセッサを通信向けにいろいろ開発していた。最初に開発されたのは8bitのBELLMAC-8(1977年)で、これに続き4bitのBELLMAC-4が1979年に開発された。Bell Labはこれに続くプロセッサとしてBELLMAC-80と呼ばれるものを開発しようとしていたが、このBELLMAC-80は当初16bitを想定していた模様だ。

ところが"A strategic decision was made for the architecture of BELLMAC-80 to be 32-bit instead of 16-bit chip, which would have been more gradual and prevented major surprises in development."ということが起きて、32bitにすることになった。

おまけにそのチップは1980年には利用可能になることが期待されたそうで、かくしてBELLMAC-4の開発と半ばオーバーラップするように、1978年にBELLMAC-80の開発がスタートする。

この"Strategic decision"なるものの理由はKang博士の記録には含まれていないので筆者の推察なのだが、当時AT&Tは3B Seriesというミニコンピュータを開発していた。

最初の製品は3B20Dと呼ばれるもので、キャビネット4つ分もある巨大なものだった。これはAT&Tの第4世代及び第5世代の電話交換機に利用することを目的としており、AMDのAm2901(4bitのBit slice CPU)を8つ組み合わせて32bitプロセッサ(Address 24bit/Data 32bit)を構築。その上ではDMERT(Duplex Multi Environment Real Time) OS、後にUNIX-RTR(Real Time Reliable)と改称される独自の高信頼性のUNIXが動作していた。

このAm2901はDECのPDP-10やPDP-11、XeroxのStar、DataGeneralのNova 4など非常に多様多種のシステムで利用された優秀なプロセッサ(というか、Am2901そのものはALUだけなので命令セットなどは各社が勝手に構築した格好で、プロセッサの部品と言うべきなのだろう)だったが、流石にDiscreteであり、システム全体の性能はそれほど高くなかった。

Am2901にしても、1981年にはECLを利用したアクセスタイム37nsのものが登場したが、1975年の初登場時はバイポーラでアクセスタイムは80nsほど。つまりどんなに頑張っても12.5MHz相当になる(1978年には50ns品が出たから20MHzも夢ではなかったが、ALU以外のところがボトルネックになって、ここまでの速度はなかなか出なかった)。

まだプロセッサのパイプライン動作も一般的ではなかったから、ALUだけなら12.5MHz駆動でも、CPU全体ではもっと遅くなる。実際3B20Dのプロセッサ(Photo01)ではMC(MicroControl Unit)がいわゆる制御部にあたり、ここは同時に最大4つの命令を発行できるとしつつも、アクセスタイムは150/200/250/300nsである。

(▲Photo01:出典はThe Bell System Technical Journal, Jan 1983の"3B20D Central Processing Unit"。同時4命令といっても、スーパースカラとかVLIWの様に4命令を同時に実行可能という意味ではなく、この図にあるMLTS/MIS/MC/MCHが同時に動かせるという意味である)

つまり一番高速でも6.6MHz相当、遅いケースでは3.3MHz相当でしかない。そういう意味では決して高速なシステムではなかった。で、AT&Tとしてはこの3B20Dの後継として使えるプロセッサをBELLMAC-80に求めたのだと思う。3B20Dは1982年に発売されるが、開発中からもう性能が不足するのは見えていたのではないかと思う。

ただ1978年というのはまだIntel 80386もMotorola MC68000も出ていなかった時期。もちろん商用RISCプロセッサも無かった。無いなら作ってしまえ、という"Strategic decision"が下されても不思議ではないと思う。

ということでBELLMAC-80のプロジェクトがスタートし、なぜか途中でBELLMAC-32に名前が変わっているが、まぁBELLMAC-80だと8bit CPUに見えてしまうという辺りが理由だったのかもしれない。

さてそのBELLMAC-80転じBELLMAC-32のアーキテクチャそのものは非常に穏当というか、極めて常識的な構成である(Photo02)。

(▲Photo02:BELLMAC-32のアーキテクチャのドキュメントは見つからなかったので、WE32100のもので代用するが、基本的には変わっていないはずである)

CPUはパイプライン構造を取っており、Address/Data共に32bit。16個の32bitレジスタを利用可能(内汎用は9つ)となっていた。まだ命令セットはRISCというよりもCISCである(Photo02にImmediate/Displacement用のユニットがあることからもこれが見て取れる)が、ざっと見てもそうおかしなものは見当たらない。

面白いというかちょっと独特だなと思うのは、ALUが33bitなことだ。これは32bit演算を行ったときの桁上がりなどの処理用に用意されたもので、普通だとステータスレジスタあたりに反映させて終わりだと思うのだが、まぁその程度である。

また当然ながら浮動小数点演算はサポートしていない。これは回路規模的に入らないという話であって、実際に後でMath Acceleration Unitが発表されている。ただこれはIntel 80386とかMotorola MC68000とかも同じ話であり、特にデメリットではない。

さてBELLMAC-32は3.5μmのCMOSプロセスを利用すると共に、ドミノ回路(CMOSの回路技術のうち、ダイナミック回路と呼ばれるもので利用される仕組み)やドミノバレルシフタ(ドミノ回路でバレルシフタを構成)を採用するなど、いろいろ高速化の工夫を凝らしたものの、目標であった4MHzの動作速度に対して達成できたのは僅か2MHzであった。

最大の理由は開発ツールの欠如であった。当時同社で使っていたLTXという配置配線ツールでは2000ゲート以上の回路を扱うことが出来ず、しかたなく制御ロジックを1000ゲートずつの2ブロックに分割、間を手配線で接続するという手法を利用したところ、この間の手配線の部分がボトルネックになってしまったという。なんというか、IntelのiAPX432とかMotorolaのMC88000を彷彿させる逸話である。

ただ開発チームはこれに続き、改良版であるBELLMAC-32Aの開発に取り組む。こちらは2.5μm CMOSを利用し、ターゲットの動作周波数は6.2MHzとされた。これも1970年代末としてはかなり困難な作業であり、また配置配線の問題は基本的には解決していなかったのだが、最終的にはCPUの個々のブロックの配置配線のプリントアウトを張り合わせ、20×20フィート(6.1×6.1メートル)の巨大なプロットを作り上げ、そのうえで色鉛筆を使って信号線を全部追っかけるという力業で何とかエラーの無い配線モデルを完成させる。

また当初は歩留まり(特にSpeed Yieldと呼ばれる、性能タイミングのばらつき)が酷かったが、これは利用したICテスターの伝達線路の問題があり、測定エラーが生じていたのが原因だったそうだ。

こちらはテスターメーカーからエンジニアリングチームを呼んで、解決に努めたという。結果、最終的には6.2MHzを超える7~8MHzでの動作が可能になり、9MHzで動作したサンプルもあったそうだ。

名称変更の理由

さてそんな訳で開発に成功したBELLMAC-32Aであるが、この当時AT&Tは米政府との間で独禁法訴訟が行われており、和解案としてAT&Tの分割が行われる。これに伴い、AT&T Bell Labの中でもこのBELLMACに関わっていた部隊はAT&T子会社で機器製造を行っていたWE(Western Electric)に寄せられることになり、ここで名称もBELLMAC-32AからWE32000に変更される。

ただ、開発段階ではスムーズに進んだWE32000だが、いざWEのAllentown(ペンシルバニア州)で量産を始めようとしたところ、歩留まりが低いという問題に直面。今度はこちらの問題を解決する必要があった。

最終的に順調に製造されるようになったWE32000は、まず1984年に出荷される3B2/3B5というシステムに採用される(Photo03)。

(▲Photo03:3B2/300のカタログより。UNIX System Vが動作するワークステーションとして提供された。3B5の方は、「Dish Washerと同じくらいの大きさ」だったそうだ)

動作周波数はいくら調べても出てこなかったのだが、多分6MHzあたりがベースで、中には8MHz位の製品もあったのではないかと思われる(3B2については1983年出荷、という説もあるのだが確認が取れなかった)。

これに引き続き、1985年には改良型であるWE32100と、これを搭載した3B15もリリースされている。このWE32100は10MHz駆動(最終的に18MHz駆動品まで登場した)となっており、さらなる微細化が施されたものと考えられる(Photo04)。

(▲Photo04:PGAながら長方形というちょっと今では珍しいタイプ)

このWE32100と一緒にWE32101(MMU)、WE32102(Clock Generator)、WE32103(DRAM Controller)、WE32104(DMA Controller)、WE32106(Math Acceleration Unit)などの周辺チップも併せて出荷された。

主な顧客はそんな訳でAT&Tということになるが、外販もされたようだ。UNIXワークステーションの黎明期に存在したJCC(日本電算機、Japan Computer Corporation)という、主にSunの互換機を出していたことで有名(?)なメーカーがあった(現在は別事業を行なっている)のだが、1987年にWE32100とWE32101、WE32106にMotorola MC68020を組み合わせたJCC-G10という謎の3Dワークステーションをアナウンスしたらしい。

WE32100がメインの処理で、MC68020をグラフィック処理に使うというちょっと理解に苦しむ構成だし、5万4200ドルというお値段もまともに売るつもりがあったのかどうか怪しいが、リリースまで出したということは設計くらいは終わっていたのだろうし、AT&TからWE32100を購入する方法はあったのだろう。

ちなみにAT&TではWE32100をハイエンドシステムにも搭載した。1987年に投入された3B4000というシステムでは、複数枚のWE32100搭載プロセッサボードを搭載し、しかもプロセッサの多重化を行っている。今で言えばLock-stepに近い動作を可能にしており、また超低遅延のプロセッサ間バスを搭載している。

このプロセッサ間バスに装着したプロセッサボードはホットスワップも可能だったそうだから、考え方としてはTandem ComputerのNon-stopシステムに近い構成である。この3B4000はキャビネットが17本とかの、かなり大規模なものだったそうだ。

話を戻すとWE32100をさらに強化したのがWE32200である。こちらはプロセスの微細化により最大24MHzまで動作周波数を引き上げたほか、

・レジスタ数を16→32に(汎用レジスタは9→20に)
・新たにBCD演算やInterlock関連など21命令を追加

などの変更が行われた。

また外部I/Fも、WE32100がAddress 32bit/Data 32bit/Interface&Control 43bitという構成だったのが、Interface&Controlが48bitに拡張されており、なのでチップそのものの互換性は無い。

ただしプログラムに関しては後方互換性が維持されている。性能としてBerkeley benchmarkの値が論文に示されている(Photo05)が、10MHzのWE32100がVAX 11/780の概ね2倍程度。

これが24MHz駆動のWE32200だと7倍弱まで性能が向上しており、当時の32bit CISC CPUとしては悪くない数字だったと思う。

(▲Photo05:IEEE Micro April 1989に掲載された"The AT&T WE32200 Design Challenge"より。まぁVAX 11/780は一つの基準ではあるが、決して高速という訳では無かったから、7倍といってもそこまで速いか?と言われると微妙ではあるのだが)

ただ前回説明したようにAT&TはこのWE32200に続く開発を中止し、MIPS陣営に与することになる。

歴史的に見ても、このCISCのロジックのままでさらなる高速化というのは結構難しかっただろうし、あとWE32000シリーズは周辺チップの数がかなり多いため、低コスト化も難しかった(Photo06)。

(▲Photo06:同じくIEEE Micro April 1989より。MMUとキャッシュが一体化というのもなかなか。WE32206がWhetstoneで3.5Mというのは要するに3.5MFlopsということで、これも凄く速いとは言い難い(ちなみにi486DX2/66MHzが概ね3.5MFlops)

最大の顧客はAT&Tの3Bシリーズだったから、これがMIPSに鞍替えしたら、まぁ生き残るのは不可能だったのは間違いない。素性は良いというか、とても素直なプロセッサだったと思うのだが、運に恵まれなかったというべきだろうか。

《大原雄介》

大原雄介

猫に傅くために原稿を書いて日銭を稼いでいる毎日。元は組み込み系のエンジニアだったのに、もうずいぶん遠い所まで来てしまった。

特集

BECOME A MEMBER

『テクノエッジ アルファ』会員募集中

最新テック・ガジェット情報コミュニティ『テクノエッジ アルファ』を開設しました。会員専用Discrodサーバ参加権やイベント招待、会員限定コンテンツなど特典多数です。