人知れず消えていったマイナーCPUを語ろう(第8回):並列CGレンダリングの夢を抱かせたINMOS Transputer

テクノロジー Science
大原雄介

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

特集

人知れず消えていったマイナーCPUを語ろう(第8回):並列CGレンダリングの夢を抱かせたINMOS Transputer
  • 人知れず消えていったマイナーCPUを語ろう(第8回):並列CGレンダリングの夢を抱かせたINMOS Transputer
  • 人知れず消えていったマイナーCPUを語ろう(第8回):並列CGレンダリングの夢を抱かせたINMOS Transputer
  • 人知れず消えていったマイナーCPUを語ろう(第8回):並列CGレンダリングの夢を抱かせたINMOS Transputer
  • 人知れず消えていったマイナーCPUを語ろう(第8回):並列CGレンダリングの夢を抱かせたINMOS Transputer
  • 人知れず消えていったマイナーCPUを語ろう(第8回):並列CGレンダリングの夢を抱かせたINMOS Transputer
  • 人知れず消えていったマイナーCPUを語ろう(第8回):並列CGレンダリングの夢を抱かせたINMOS Transputer
  • 人知れず消えていったマイナーCPUを語ろう(第8回):並列CGレンダリングの夢を抱かせたINMOS Transputer
  • 人知れず消えていったマイナーCPUを語ろう(第8回):並列CGレンダリングの夢を抱かせたINMOS Transputer

コンピュータの歴史を暗部も含めてていねいに掘り起こすことで定評のある大原雄介さんによる連載8回目。今回は1990年代に並列処理CGをやっていた人たちなら郷愁に浸れるかもしれないTransputer(トランスピュータ)とその開発言語であるOCCAMがテーマです。



Transputerというプロセッサは、割と古い(失礼)読者には刺さりやすいらしい。担当編集の松尾氏も名前を聞いただけで喜んでいたから、50代後半以降の方なら名前を聞いたことはあるかと思う。

実はもうバックナンバーが手元に無いので正確な号数などは確認できないのだが、CQ出版のインターフェース誌(昨今の白地のものではなく、黒地にオレンジ色の配色だったころの話だ)で、随分このTransputerを持ち上げていた時期があった。

たしかINMOSのCEOだかCTOだかが来日した折に当時の編集長が対談を行い、その中で突如Tramモジュールを組み合わせて14プロセッサのシステムを作れた(!)なんてインタビュー記事を読んだ覚えもある。時期から言えば1986~1988年あたりのどこか。当時筆者はまだ大学生(か、社会人1年目あたり?)で、まさかその後自分でもTransputerに触る羽目になるとは思わなかった。

Transputerを製造したのはイギリスにあったINMOSという会社だが、正確に言えば同社は3つある。一つは全体の親会社であるINMOS International PLCで、その下にイギリスに拠点を置くINMOS Limitedと、アメリカにINMOS Corporationという2つの子会社が存在した。

創業そのものは1978年だが、元々は1977年にトロントで行われたIFIP(International Federation for Information Processing)という学会の際に、INMOS創業者のIann Barron氏が当時TIに在籍していたDick Petritz博士と出会うところから始まる。

最終的にBarron氏とPetritz博士はマイクロコンピュータの会社を設立することで合意。1978年にはイギリス政府からNEB(National Enterprise Board)経由で資金援助も受け取り、INMOSを創業する。ちなみにこの時、第3の創業者であるPaul Schroeder博士が加わる。

▲Photo01:3人の創業者。左がSchroeder博士、右がPetritz博士、後方がBarron氏である。出典はThe Richard Petritz Foundation

Schroeder博士はその直前まではMostek(連載第4回に出て来た、Mostek 3870を作った会社だ)でメモリビジネスの指揮を執っていた。何でメモリの専門家を?という話だが、実はINMOSの設立当時の主要なビジネスはSRAMの製造であり、1980年に16K SRAMの量産に入っている。


IMS 1400という名称で販売されたこの16K SRAMは、1981年に英国でトビー賞(英国のElectronic Timesが行っていた、読者投票により最も優れた製品に贈る賞)を受賞している。このメモリビジネスは、INMOS Corporationが主体になっていた。INMOS Corporationは続いて、64K DRAMも手掛ける。こちらはSRAMほどではないにせよ、そこそこ成功したビジネスになった。

もっともINMOSの本来の目的はマイクロプロセッサを構築することだった。こちらはブリストルに本拠を置くINMOS Limitedの作業である。Barron氏の目的というかビジョンは、今で言えばプロセッサというよりはDSPに近いものだったが、特異だったのはシンプルなI/Fを経由して他のプロセッサと連携し、スループットがプロセッサ数にリニアにスケールする並列プロセッサ(というか、並列DSP?)的なものだった。この並列性がTransputerの最大の特徴でもある。

会社の方にも変化があった。NEB経由で政府から受けた投資や債務保証をThorn EMIが肩代わりし、この時点でINMOSは同社の子会社となった。そしてそのThorn EMIの傘下で、INMOS Limitedはプロセッサの開発を行う。

同社の最初のプロトタイプがSimple 42というチップ(Photo02)である。

▲Photo02:出典はDavid May博士のページ。上段はMicrocode ROM、下段がALUだろうか。右上のロゴは何だろう?

Simple 42は16bitのCISCアーキテクチャで、レジスタは7つ。命令数は48と小さく、勿論整数演算のみであるが、ちょっと面白いのは3オペランドの乗加算(C=A×B+C)とか、余り付きの除算(A=C×A÷B、Bはオーバーフロー、Cは余り)といった、なんかあんまり見たことが無い命令があるあたりだろうか。

Photo02を見る限りは、1983年にはこのSimple 42が完成していたようだ。このSimple 42はあくまでもプロトタイプというか評価用のチップで、ここで基本的なTransputerのアイデアが検証されたようだ。

ただINMOSは創業期のARM(現Arm)と同じように、最初に開発したのが回路設計用CADだった(ARMはARM 1チップを使ってEDAツールを稼働させた、という話は以前ここで触れた)あたり、ひょっとするとこのSimple 42を使ってCADを構築した可能性も無くは無いが、そのあたりの詳細は不明である。

初のTransputer「T414」登場

その1983年には、初の製品であるT414も完成している(Photo03)。

▲Photo03:出典はUwe Mielke氏の"Transputer Architecture"。これはT414Bのダイ写真と思われる

このT414は1.5μmプロセスを利用し、15~20MHzで動作、性能は7.5~10MIPSとされた。1980年代としては、これはかなり高性能の部類に入る。Intelは1985年に80286を発表するが、12MHz品でも2.66MIPS程度の性能だったから、やや投入が遅れたとはいえ十分な性能だった。

もっとも最初に登場したT414Aはバグも多く、動作周波数もそこまで上がらず、何より実装している4KB SRAMも利用可能なのは半分の2KB(残りはバグでアクセスできない)という有様である。とりあえずバグ修正(内部SRAMは2KBのまま)を施したT414Bが量産に入ったのは1985年のことである(内部SRAMが4KBフルに使えるようになるのは、後で出たT425である)。

Photo04はそのT414の構成図であるが、プロセッサコアとSRAM、外部メモリI/F、それと4本のLink、System Servicesという周辺回路のComplex「だけ」しかないことが判る。

▲Photo04:通常のInterruptに相当するのは右下のEventである

MMUも存在しておらず、フラットな32bitメモリアドレスが広がっているという、何というかMCUの構成のまま32bit拡張しちゃいましたとでも言うべきシンプルな構成である。何でこんなことになったか?というと、当時Transputer(というか、T400)を動かすための汎用のOSが存在しなかったからだ。

元々Transputerは先にBarron氏のビジョンとして説明したように、並列プロセッサを構築したいというものだった。この目的のために、全てのTransputerには4本のLink(INMOS Link:当初はOS-Linkなどと呼ばれていた)が搭載されており、このINMOS Link(双方向Linkで、最大20Mbpsでの通信が可能)を利用してTransputer同士が通信を行えるようになっていた。

Transputerのハードウェアそのものは単独でも動作するのだが、適切なソフトウェアを利用することでTransputer同士が連動して動く仕組みを簡単に構築できた。Photo05はPhoto02と同じくINMOSでアーキテクトを務めていたDavid May博士撮影の写真だが、T414を42個搭載したボードである。

▲Photo05:出典はPhoto02に同じ。このボードを10枚組み合わせたものはマンデルブロ図形のリアルタイム描画が可能だったとしている。確かにマンデルブロ図形とかなら1回の計算あたりの処理量が少ないから、2KBのSRAMでお釣りがくるだろう。このボードは非売品で、30枚のセット(T414が1260個実装!)がサウサンプトン大学に納められたという

INMOS Linkで2次元Meshを構成する形で簡単にマルチプロセッサ構成が可能であることを実証するような評価ボードである。

当時、こうした超並列に対応した汎用のOSは存在しておらず、それもあってOSにあたるものは、少なくともINMOSからは提供されなかった(存在しないわけではなく、RTOSとしてVirtuosoが開発された、という話はこちらで説明している)。その代わりと言っては何だが、Transputer上で動作する言語というか実行環境として提供されたのがOCCAMである。

Transputerを動かすOCCAM言語

OCCAMは元々Charles Antony Richard Hoare教授(当時はオックスフォード大学コンピューティング研究所のプログラミング部門を率いていた)が考案した、CSP(Communicating Sequential Processes)に基づく実装である。このCSP、日本でもCSPコンソーシアムなる団体があるのだが、2018年あたりから更新が無いのが気になるところだ。

話を戻すと、このCSPは名前の通り通信をベースにした並列性プログラム言語というかプログラミング環境というか、そういう類のものである。T400の実装に加え、このCSPに沿ったOCCAMという言語の実装はMay博士が行っている。

実のところ、1993年のマニュアルによれば、Transputerの言語はOCCAMを効率的に実行できるように設計されている(その意味ではCISCとかRISCの論争は無意味)とか書いてあるあたり、まぁOCCAMを実行するためのプロセッサと言っても間違いではなかったのだろう(Photo06)。

▲Photo06:出典はCBDA(U.S. Army Chemical and Biological Defense Agency)のEdgewood Research, Development & Engineering CenterのL. Russell William氏による"The Transputer"。何で生物化学兵器防衛局でTransputerの研究をしてるんだ?と思わなくもない

ただこのOCCAMが使いやすかったか?というと、研究者には良かったのかもしれないがエンジニアには苦痛でしかなかった。

1990年頃だと思うのだが、当時何故かT414をベースにしたシステム(ただしT414は1個だけ。あとは専用回路の塊)の開発をした経験があるのだが、OCCAMはそういう専用回路用の制御にはまるで向いていなかったというか、マニュアル読んで1日で投げ出したというのが正確なところか。

そもそもT414が1個だけ、という状況ではOCCAMを利用すべきメリットが皆無である。幸いこの頃にはOCCAM以外にParallel Cと呼ばれるCコンパイラがあり、こちらで十分用が足りたので、OCCAMのマニュアルはそのまま棚に戻して終了である。

実は似たような話は他にもあった。T414や後述のT800をベースにスーパーコンピュータを開発していたFPS(Floating Point Systems, Inc.)という会社がアメリカにあり、1986年にFPS Tシリーズの第1世代、1988年には第2世代を発表するのだが、この第1世代にはT414、第2世代にはT800を利用している。

ところがスーパーコンピュータと言えば利用される言語は圧倒的にFORTRANであり、一方INMOSのTransputer用FORTRANはかなり後になるまで提供されなかった。これは利用者には超不評であり、大量のFORTRANで記述されたコードをOCCAMに書き直す必要があった。

結局第1世代は数十セットが販売されたものの、第2世代はそもそも発売されたかどうかさえ不明であり、同社の買収などもあってあっという間に世の中から消えてしまった。

もう一つ有名なところに、Meiko Scientificがある(Meikoは日本語の「名工」から取ったらしい)。ここは元々T800シリーズを利用して超並列マシンを作ろうとしたINMOSのエンジニアの集団であるが、T800シリーズの開発遅延を受けて「んじゃT800以外を使って作ろう」に方針転換、スピンアウトして立ち上げられた会社である。

最初に開発されたのは、後述するT212をベースにしたプロトタイプ(これは9週間で完成したらしい)で、1985年のSIGGRAPHで展示。次いでプロセッサをT414に切り替えて、Meiko CS-1(のちにMeiko Computing Surfaceに改称)を発売する(Photo07)。

▲Photo07:コンパクトに見えるが、実際にはVMEのカードが40枚(20枚×2)装着可能なシャーシ。横幅は400mmほど、高さは1m弱と思われる

このComputing Surfaceは後追いで投入されたT800やIntelのi860やSunのSPARCを載せたカードも装着可能であり、ただしカード間の接続はTransputerを利用する(このためi860やSPARCのカードにも通信用にT414が載っていた)という仕組みだった。

ただこんな構成だから、通信部分はOCCAMで何とかなるかもしれないが、それ以外の部分ではOCCAMが使えないことになる。T414の時点ではOSとしてOPS(OCCAM Programming System)なる非常に原始的なOSが提供されていたが、i860とかSPARCをサポートするにあたりMultiOPSというマルチユーザー環境のOSにバージョンアップされ、後にはM2VCS(Meiko Multiple Virtual Computing Surfaces)という一種の仮想化OSまで提供されるようになり、このあたりからOCCAMと決別し始める。

このMeiko Computing SurfaceはCG制作マシンとして、グラフィックボードと組み合わせて多数のシステムが販売されることになったが、当然ここで利用されるCG作成ソフトはOCCAMを利用せずに作成されている。

そもそもCGレンダリングとかをやろうとするとメモリが大量に必要であり、2KBの内蔵SRAMだけではまるで話にならないし、外部にメモリを付けるならもっと高速のプロセッサでも良かったわけだ。

筆者の経験に戻ると、T414はROM(当時だからEEPROM)経由のブートとINMOS Link経由のブートが選べた。そこでParallel Cベースで実行用のバイナリ(というかHex)を作成し、EEPROMに書き込んで、それを装着すればブートする。SRAMが2KBあるから、External Memory InterfaceにDRAMとかを接続しなくても、とりあえず制御回路用には十分なメモリ領域だった。もうMPUというよりはMCUを使う感覚だが、そうした用途には十分であった。ただこの並列システムはいわばMIMDの構成なので、簡単なシステム制御程度には2KBでも足りるが、本格的に処理を行わせようとすると明らかに足りない。

OCCAMというかCSP的に言えば、個々のプロセッサに複雑な処理をさせず(つまり4KBなり2KBで収まる範囲まで処理を分割し)、その分多数のプロセッサを繋げれば良いという考え方で、どちらかと言うと昨今のデータフロー制御を利用したAIプロセッサに近いイメージがある。

勿論そんな理想的な状況はそうそう無いわけで、限られたプロセッサで一定の処理をしようとすると内蔵SRAMでは足りない、という状況が続いたわけだ。

さて、こうした状況はINMOSも当然理解しており、1987年にT800(Photo08、09)を発表する。

▲Photo08、09:出典はPhoto03に同じ。T414同様に1.5μm CMOSで製造され、動作周波数は20MHz。ただしダイサイズはT414の8.5mm×8.3mmから8.5mm×10.7mmに28%ほど大きくなった(そのほとんどがFPUと思われる)

ちなみに当初予定は1985年にリリースだったが、開発が難航して2年ほど遅延した格好だ。T414との大きな違いは、

・ALUが高速化され、殆どの命令が1cycleで実行可能になった。
・IEEE754互換の64bit FPUを搭載(当然ながら非パイプライン構造)
・内蔵SRAMがちゃんと4KB利用可能

といったあたりである。

この後、内部バスを命令とデータで分離したハーバードアーキテクチャを採用したT801、そのT801の高速化版であるT805も1989年頃までにリリースされている。INMOS Linkなどの仕様はT414と同じであり、命令セットも互換(後方互換性を確保:幾つか拡張命令が追加されている)ということで、「高速なT414」として利用することが可能であった。

とは言え根本的にはOCCAMベースであり、また内蔵SRAMも4KBだから実質T414から倍増とは言え、まだ十分とは言えなかった。ちなみにこのT805の内蔵SRAMを大容量化すると共に、INMOS Linkの速度を引き上げたT810の計画もあったが、これはペーパープランで終わっている。

このT800の前年である1986年にリリースされたのがT212である。

こちらはSimple 43(Simple 42の後に出て来た、もう少し完成度を高めたプロトタイプ)にDMAエンジンなどを搭載した構造(Photo10)で、16bitのプロセッサコアに2KBのSRAMを組み合わせており、内部/外部バスは全部16bit幅になっている。

▲Photo10:出典はINMOSのIMS T212 Transputer Product Datasheet。バス幅が半分になった以外はまんまT414という感じである

演算性能そのものはT414同様に20MHz駆動で10MIPSであるが、扱えるデータ量はバス幅が半分だからT414から半減している格好だ。これはT414の低価格版という扱いであるが、このT212にはディスクコントローラ用に特化したM212という派生型も用意されている(Photo11)。

▲Photo11:出典は"IMS B005 Design of a disk controller board with drives"。SA400/ST506 I/Fというあたりに時代を感じる。流石に外部にDRAMが搭載されている。しかしこれを見るとINMOS Link経由でDisk I/Oが可能なI/Fという感じで、一般的ではない気もするのだが

さらに1988年頃には、T212の内蔵SRAMを4KBに倍増させたT222、そのT222にT800で追加された拡張命令のサポートを加えたT225もリリースされている。

また同じ1988年には、M400シリーズのテコ入れも行われた。まずは内蔵SRAMをちゃんと4KB使える様にしたと共に動作周波数を最大30MHzまで引き上げたT425が登場しており、これはT225同様にT800の拡張命令のサポートも追加されている。

このT425を20MHz動作とし、SRAMを2KBに制限、Linkも2本に減らした組み込み向け派生型であるT400も1989年までにリリースされた。この時点でTransputerは16bitが4品種、32bitが6品種提供されていた格好だ。

この時点でINMOSはTransputerのチップだけでなく、TRAM(Transputer Module)と呼ばれるモジュールも提供していた(Photo12)。

▲Photo12:1988年3月付のカタログより。ちなみに奥付を見るとINMOS Japan K.K.の文字もある。冒頭で書いた、当時日本で妙にTransputerが取り上げられていたのは、INMOS Japan K.K.が頑張ったためなのかもしれない

カタログではTRAMが5種類、TRAMを搭載できるボードが5種類、Transputer搭載のボードが7種類ラインナップされている。こうしたものを利用して広範に利用できるように、という訳だ。

加えて同社はTransputer以外のチップも多く手掛けていた。SRAM/DRAMは冒頭で紹介したが、他にもA100というCascadable Signal Processor(ベースはDSPだが、これをカスケード接続できる構造のもの:ただしINMOS Linkはサポートしていない)やビデオカード用のDACなども発売している。このINMOSのDAC(INMOS G171)は、1987年にIBMが出したVGAカードに採用されていた、というのは余り知られていない。

64bitアーキテクチャ開発するも……

ただこうした周辺チップは小金を稼ぐことは出来ても、大きく売り上げに貢献する訳ではない。やはりTransputerそのもののテコ入れが必要である。勿論INMOSもそんなことは重々承知であり、T800の後継として64bitアーキテクチャであるT9000の開発を進めていた。

5段のパイプライン構造と部分的にSuperScalarを採用。SRAM内蔵はやめ、その代わりに16KBのキャッシュを搭載した。設計目標は50MHz駆動ながらT805の10倍の処理性能と5倍のLink速度を実現するというものであったが、これを開発する前に会社の命運が尽きた。

1989年3月、EMI ThornはINMOSをSGS-Thomson(現STMicroelectronics)に売却する。売却の理由は、EMI ThornはこれまでにINMOSに3億ポンド以上投資してきたものの、T9000シリーズの開発にはさらに2億ポンドほどが必要で、その投資に耐えられないから、というものであった。

SGS-Thomson傘下になっても暫くINMOSは引き続き開発を進めていた。1991年8月に行われたHotChips 03におけるINMOSというかSGS-ThomsonのT9000の発表の〆はこんな感じだった(Photo13)。

▲Photo13:C104はINMOS-LinkベースのSwitchで、これを利用して大規模接続が可能というもの。50MHz駆動で3~8Wと随分バラつきがあるのもちょっと珍しい

ただ実際にはT9000はこのスケジュール通りに進まなかった。50MHz駆動のT9000のプロトタイプの性能はわずか36MIPSで、これならT805を1μmプロセスに移行させて50MHz駆動した方がマシである。結局T9000プロジェクトはキャンセルされる。

その後、SGS-ThomsonはT450コアをベースにST20というコアを開発、GPSとかSTBなどの内部コントローラに利用されることになった他、なんとかTransputerのマーケットを広げようと、例えば1992年にはX端末向けのソリューションを提案したりしている(Photo14)が、焼け石に水と言うか、マーケットは殆ど広がらなかった。

▲Photo14:これはIMS B020というT425 or T805が2つとフレームバッファが搭載されたISA Busの拡張ボードを装着し、これを利用してMS-DOS端末でX端末が使えるというもの

結局SGS-ThomsonはINMOSのビジネスの継承をほぼ放棄。いくつかの組み込み向け製品のサポートは継続したものの、INMOSブランドを含むTransputerそのものは1994年末にほぼ終焉を迎えることになった。

どこでボタンを掛け違えたか、を判断するのは難しいが、とりあえずT9000の開発に失敗したことがトドメを刺したのは間違いない。ただそもそもT800の開発が2年遅れたあたりから衰退はもう避けられなかった気がする。

個人的な感想で言えば「仕事で使うのでなければ」面白いチップだったと思う。

《大原雄介》

大原雄介

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

特集

BECOME A MEMBER

テクノエッジ友の会に登録しませんか?

今週の記事をまとめてチェックできるニュースレターを配信中。会員限定の独自コンテンツのほか、イベント案内なども優先的にお届けします。