DECとともに消えた名機VAX向けRTOS「VAXELN」の栄枯盛衰リアルタイムOS列伝(47)(2/3 ページ)

» 2024年06月03日 07時00分 公開
[大原雄介MONOist]

ローエンド向けVAXから派生したMicroVAX IIのRTOSとして誕生

 さて、DECはPDP-11の後継として1977年に仮想記憶をサポートした32ビットのVAXアーキテクチャと、これに基づく最初の製品であるVAX-11/780をリリースしている。このVAX-11/780は、最小構成でもキャビネット2つを占有する巨大なもので、組み込み機器に使うには無理があったが、これに続いてVAX-11/750やVAX-11/725、730といったローエンド向け製品が投入される。

 VAX-11/780は、TTL ICを組み合わせた巨大な構成だったが、VAX-11/750はバイポーラのゲートアレイ、VAX-11/725・730はAMDのAm2901を組み合わせて構成された関係で、性能こそVAX-11/780には及ばなかったものの、はるかにコンパクトに収まった関係で、組み込み向けにも利用できるものとなった。ただ、PDP-11を置き換えるにはまだ大型すぎ、かつ高価な嫌いはあった。DECはこれに引き続き、まずV-11と呼ばれる4チップ構成のフルセットVAX、次いでKD32と呼ばれる2チップ構成のサブセットVAXの開発を行ったが、構造が簡単だったためにこのKD32の方が先に世に出ることになり、これはMicroVAX Iと呼ばれている。MicroVAX Iはいろいろと欠点もあり、性能も低かった(例えば、DMAの機能を搭載しておらず、本来DMAで処理されるべきことを全てCPUのPIOでエミュレーションしていた)ものの、低価格かつコンパクトに実装された。DECはこれに続き、KD32の後継として78032と呼ばれるフルセットVAXのCPUを開発。これを実装したMicroVAX IIは同社の大ヒット製品となった。

 ということでやっと話がVAXELNに戻ってきた。ちょうどKD32や78032あたりを開発しているタイミングで、DECはPDP-11+RT-11として利用されていた組み込み向けを、MicroVAX IIベースで置き換えることを想定し始めたのだ。もっと正確に言えば、もともとはV-11をターゲットとして、途中からMicroVAX I/IIベースに切り替えたというべきか。ただし、このためには新しいRTOSが必要になった。ハードウェアはMicroVAX IIベース(もちろんVAX-11/730や、何ならもっと性能が上のVAX-11でも動作はした)で確定なのだが、実はVAX-11とV-11やMicroVAX I/IIの決定的な違いの一つが、PDP-11コンパチブルモードの実装の有無である。

 VAX-11シリーズはPDP-11との互換モードがあり、これによってRSX-11や何ならRT-11を動かすこともできたが、V-11やMicroVAXを選んだ時点でこの選択肢はなくなった。このため、新しいRTOSはRT-11との互換性を考える必要がなかった(というか、互換性を捨てるためにMicroVAXをターゲットにした可能性すらある)。この新RTOSの開発の指揮を執ったのは、その後MicrosoftでWindows NTを開発したことでも有名なDave Cutler氏である。RSX-11やVAX/VMS(VAX-11の上で動くDEC独自のOS)の開発に携わった後の仕事がこれである。開発開始はV-11とほぼ同じ1979年末であったが、最初のバージョンはわずか18カ月で完成した。当初はVAX ELAN(Executive for Local Area Network)という名称だったが、既にElanという商標が欧州で利用されていたため、これを避けるためにELNと改称し、VAXELNとなったらしい。

 VAXELNはVAXアーキテクチャ上でリアルタイム制御を行う用途に向けて開発されたRTOSである。特徴は以下の通りで、これらだけ見るとよくあるRTOSという感じである。

  • Preemptive Kernel、Multi Process構成。複数のProcessを包括するJobの概念もある。Threadのサポートは無し
  • Monolithic Kernel構成。最初のバージョンにはなかったが、後のバージョンではSMP対応も追加される
  • モジュール構造で任意の機能を追加。例えば標準ではCLI(Command Language Interpreter)のサポートはないが、追加可能
  • (VAX/VMSと比べて)Low Overhead Kernel。VAX/VMSでは4レベルの保護機能を全レベル使い切って複雑な割り込みやタスク管理、I/Oのハンドリングを行っているが、VAXELNではKernelとUserの2レベルの保護レベルのみを利用
  • 同期/通信にはMessage/Port/Name/Semaphore/Event Flagが提供される。のちにMailboxも提供されたような記憶があるのだが、確認できない
  • 開発環境はVAX/VMS上で提供される

 さすがにディスクレスでのブートはできない(ネットワークブートは可能だった)が、メモリフットプリントは相応に小型化されていた。ただし、VAXELNの最大の特徴は、なぜかカーネルがPascalで記述されていたことだ。なぜかは不明(昔どこかで理由を見かけた覚えがあるのだが、もう確認できない)である。筆者はカーネルコードを見たことがあるのだが、確かにPascalで記述されていた。ちなみにアプリケーション向けにはPascal以外にCとFortran、それとAdaのサポートがあった。

 このAdaは、当時DoD(米国防総省)がアプリケーションの記述言語にAdaを指定し、かつそのAdaの開発環境の認証を行っていたこともあり、米軍向けのシステムはDoDの認証を受けたシステム上で、やはり認証を受けたAdaコンパイラを使って記述する必要があった。VAXELNはAdaの実行環境に関してDoDの認証を受けており、またDECはVAXELN用にDoDの認証を受けたAdaコンパイラを提供していた関係で、米軍向けにMicroVAXやVAX+VAXELNという構成で納入するケースが非常に多かった。どうかすると軍用向けのインタフェース(例えばMIL-1553-B)用のAdaで記述されたドライバなんてものが存在しており、それもVAXELN上で動作した。こういう、非常に特定の用途向けにVAXELNは重用されることになった。

Copyright © ITmedia, Inc. All Rights Reserved.