MC88000

M88000
開発者 モトローラ
ビット数 32ビット
発表 1988年
デザイン RISC
タイプ レジスタ-レジスタ
エンコード 固定
ブランチ 比較と分岐
エンディアン バイエンディアン
拡張 グラフィックス命令(88110のみ)
オープン No
レジスタ
汎用 32ビット 32本
浮動小数点 80ビット 32本(88110のみ)

MC88000(エムシー88000)は、米モトローラが設計開発したRISC命令セットアーキテクチャ (ISA)。通称には88000(はちまんはっせん)、m88k(エムはちはちケイ)がある。1980年代、モトローラが自社設計したRISCアーキテクチャである。SPARCMIPSから2年ほど遅れて市場に投入された。スタートが遅れたことと、第2世代のMC88110がさらに遅れたことから、後述するMVMEや組み込み用途以外ではほとんど成功できなかった。

歴史

[編集]

当初、同社のMC68000シリーズへのオマージュの意をこめてMC78000と名づけたが、設計と共に紆余曲折を経て名称も変更され、1988年4月に登場した。

1980年代末、NeXTAppleアポロコンピュータといった企業が将来の採用を見据えて88000を注視していたが、いずれも88110の登場が1990年にずれこんだために採用を見合わせている。

システムを普及させるため88openグループが結成された。これはサン・マイクロシステムズSPARCについて行ったことに似ている。しかし、88Open ELF ABI仕様などを制定したものの、ほかに多くの成果を生み出さなかった[1]

1990年代初頭、モトローラはAIM連合に参加してIBMPOWERをベースとした新しいRISCの設計に関わることになった。MC88000の一部の特徴がPowerPCに受け継がれ、顧客へのある種のアップグレード・パスを用意した。この時点をもってMC88000は消え行く運命となったのである[2]

アーキテクチャ

[編集]

純粋な32ビットのロード/ストア・アーキテクチャで、命令キャッシュとデータキャッシュを分離し(ハーバード・アーキテクチャ)、分離されたデータバスとアドレスバスを備えていた。命令セットは小さいが強力で、他のモトローラのCPUと同様セグメント方式は採用していない。

アーキテクチャ上の大きな間違いは、整数命令と浮動小数点命令で同じレジスタファイルを使ったことである。そのため、レジスタファイルは両方の演算に使えるよう多数のリード/ライト・ポートを備えなければならなくなった。正確な例外の実装にヒストリーバッファ方式を採用したため、さらにポートを必要とした。このため、高周波数のスーパースケーラ実装がより難しくなった[要出典]

実装

[編集]
MC88100

88000 ISA の最初の実装は MC88100英語版 マイクロプロセッサで、FPUも統合されている。それと組合わせるMC88200はMMUキャッシュコントローラを担当したチップである。このように分割したのはマルチプロセッサシステムを容易に構築するためで、ひとつの88200が4個までの88100をサポートした。しかし、シングルプロセッサのシステムを構築する場合、ふたつのチップを搭載してそれらの間を結線しなければならず、結果としてコスト高となった。このことがMC88000が成功しなかった要因のひとつと考えられている。

MC88110

この問題は後にふたつのチップをひとつのパッケージにし、一次キャッシュまで搭載したスーパースケーラMC88110英語版で解決された。これに加えて、マサチューセッツ工科大学の*Tプロジェクトの要請で、チップ上にマルチプロセッサシステムのための通信機能を組み込んだMC88110MPが作られた[3]。このあと、100MHzまで高速化したMC88120が計画されたが、生産発売には至らなかった。

組み込み向けの実装としてMC88300が1990年代初めごろに開発されていたが、後に中止となった。フォード・モーターがこれをあてにしていた最大の顧客だったが、フォードはPowerPCへの転換を受け入れた。

採用例

[編集]
MVME-197LE

モトローラはMC88000を使ったシングルボード・コンピュータシリーズMVMEをリリースした。また、MVMEボードを使った Series 900 というコンピュータもリリースしている。タワー型やラックマウント型システムとは異なり、Series 900 はコンポーネントを積み重ねて、互いをバスのようなケーブルで相互接続する形状で、珍しいものだった。

大きなサードパーティのユーザーは少ない。有名な例としてデータゼネラル (DG) のAViiONがある。DGは1995年インテルのマイクロプロセッサに移行するまでMC88000シリーズを使い続けた。他にもアンコールコンピュータInfinity 90など使用例は様々あるが、どれほど売れたのかは不明である。アンコールは後にAlphaに移行した。

GECコンピュータ英語版は88100を採用した GEC 4310 を開発した。しかし、GEC 4000 シリーズはかつてゲートアレイAm2900をCPUに使っていたが、GEC 4310 はメモリ管理に問題があり、従来製品よりも性能が悪かった。BBN Butterfly の TC-2000 という機種はMC88100プロセッサを採用し、最大512CPUまで接続可能だった。ライノタイプ・ヘルはMC88110を採用した Power ワークステーションを開発し、その上で画像編集ペイントソフト DaVinci を動作させた。

1980年終盤にはNeXTApple ComputerがMC88000を使用することを検討したが、MC88110の登場は1990年であり、それらに採用されることはなかった。

NeXTはMC88110を使ったマシンをいくつか試作したが、1993年にハードウェア事業から撤退すると同時にそれらもお蔵入りとなった。日本のオムロンが4プロセッサの luna88k を開発し、カーネギーメロン大学Machプロジェクトで一時期使用された。ノーザンテレコムは1990年代初めごろ、MC88100とMC88110を採用したデジタル交換機 DMS SuperNode ファミリを開発している。

他のユーザーは中小企業ばかりである。Alpha Microsystems68kから88kへの乗り換えを計画して UNIX System V を移植したりしていたが、68kの派生品を採用することに決めて、88k採用をあきらめた[4]NCDは88kを採用したX端末を開発した。倒産した Norsk Data からスピンオフした Dolphin Server は88kを採用したサーバを開発し、1992年までに100システムほどを出荷した[5]

組み込み用途では、F-15 S/MTD の "Tri-channel VMS Computer" が88kを3個使った3重冗長化コンピュータになっていた[6]

OSサポート

[編集]

モトローラは自前で UNIX System V の派生OS System V/88 を開発した。Release 3.2 Version 3 と Release 4.0 Version 3 という2つのメジャーリリースがあった[7]。データゼネラルのAViiONでは DG/UX が動作していた。OpenBSDにはMVME版[8]、Luna88k版[9]、AViiON版[10]の移植がある。非公式ながらMVME向けのNetBSD移植もある[11]

脚注・出典

[編集]
  1. ^ Updegrove, Andrew (2006年3月). “STANDARDS WARS: SITUATIONS, STRATEGIES AND OUTCOMES” (PDF). ConsortiumInfo.org. p. 7. 2009年6月16日閲覧。
  2. ^ Zipper, Stuart (May 24, 1993). “Motorola PowerPC deal with Ford raises questions on 88K RISC fate”. Electronic News. 2009年6月16日閲覧。
  3. ^ Papadopoulos et al. (July 28, 1993). “*T: Integrated Building Blocks for Parallel Computing” (PDF). Massachusetts Institute of Technology. 2009年6月16日閲覧。
  4. ^ AMPM: The Alpha Micro Pageant of Machines
  5. ^ Dolphin m88k Dolphin Server Technology
  6. ^ Nobbs, Steven G. “PSC Implementation and Integration” (PDF). NASA. p. 63. 2009年6月16日閲覧。
  7. ^ Patterson, Barbara (November 2, 1991). “Motorola System V/88 R4v3.1”. Motorola Computer Group. 2009年6月16日閲覧。
  8. ^ OpenBSD/mvme88k
  9. ^ OpenBSD/luna88k
  10. ^ OpenBSD/aviion
  11. ^ NetBSD/m88k Unofficial port of NetBSD 3.x