OpenVMS Alpha
オペレーティング・システム
OpenVMS VAX から OpenVMS Alpha へのアプリケーションの移行


前へ 次へ 目次 索引


1.2 VAXアーキテクチャと Alphaアーキテクチャの相違点

VAXアーキテクチャは強力で柔軟な命令を備えた,複合命令セット・コンピュータ(CISC) ・アーキテクチャであり,VAXシステム・ファミリ全体で使用されています。統一アーキテクチャのVAXファミリを,OpenVMSオペレーティング・システムと組み合わせて使用すれば,アプリケーションをVAXstationで開発し,小型VAXシステムでプロトタイプを作成し,大型VAXプロセッサのプロダクション環境で使用したり,フォールト・トレラントなVAXftプロセッサで実行することができます。VAXシステムのアプローチの利点は,個別のソルーションを変更し,大規模な問題全体のソルーションとして容易に統合できるということです。VAXプロセッサのハードウェア設計は特に,可用性の高いアプリケーションに適しています。たとえば,重要な使命を担うビジネス業務を実行するための,信頼性の高いアプリケーションや,様々な分散クライアント/ サーバ環境でのサーバ・アプリケーションを実行するのに適しています。

弊社が実現したAlpha アーキテクチャは,高性能の縮小命令セット・コンピュータ(RISC)・アーキテクチャであり,1つのチップで 64ビット処理を実現できます。64ビットの仮想アドレスと物理アドレス,64ビットの整数,64ビットの浮動小数点数値を処理します。64ビット処理は特に,高い性能ときわめて大きいアドレッシング空間を必要とするアプリケーションにとって役立ちます。たとえば,Alphaプロセッサは,グラフィック処理アプリケーションや,膨大な数値を処理する経済予測や気象予報などのソフトウェア・アプリケーションに適しています。これらは,イメージ処理,マルチメディア,ビジュアライゼーション,シミュレーション,モデリングなどの処理を必要とします。

Alphaアーキテクチャはスケーラブルでオープンなアーキテクチャとして設計されています。シングル・チップによる手のひらサイズのパームトップ・システムから,数千個のチップからなる超並列スーパーコンピュータまで, 様々なシステムでの実現が可能です。このアーキテクチャはまた,OpenVMS Alphaも含めて,複数のオペレーティング・システムをサポートします。

表 1-1 は,AlphaアーキテクチャとVAXアーキテクチャの主な違いを示しています。

表 1-1 AlphaアーキテクチャとVAXアーキテクチャの比較
Alpha VAX

  • 64ビット・アドレス+

  • 64ビット処理

  • 命令

    • 単純

    • すべて同じ長さ(32ビット)

  • ロード/ストア・メモリ・アクセス

  • アラインされていないデータに対しては重大な性能低下

  • 多くのレジスタ

  • 命令は要求の順序と無関係に終了

  • 多段のパイプラインと分岐予測

  • 大きいページ・サイズ(ハードウェアに応じて8KB〜64KB)

  • 32ビット・アドレス

  • 32ビット処理

  • 命令

    • やや複雑

    • 可変長

  • 操作とメモリ・アクセスを1つの命令に組み合わせることが可能

  • アラインされていないデータに対して中程度の性能低下

  • 比較的数の少ないレジスタ

  • 命令は要求された順に終了

  • パイプラインは限定的に使用

  • 小さいページ・サイズ(512バイト)


+64 ビット・アドレスについては,『OpenVMS Alpha 64 ビット・アドレッシングおよび VLM 機能説明書』を参照してください。

RISCの一般的な特性

Alphaアーキテクチャの特徴の一部は,新しいRISCアーキテクチャの典型的な特徴です。次の特徴は特に重要です。

Alpha固有の特性

これまで説明したRISCの一般的な特性の他に,Alphaアーキテクチャは,移行した VAXアプリケーションをAlphaシステムで実行するのに使用される多くの機能を備えています。Alpha アーキテクチャでは次の機能が提供されます。

1.2.1 ユーザ作成デバイス・ドライバ

ユーザ作成デバイス・ドライバと Step 2 ドライバ・インタフェースと呼ぶ新しいインタフェースの正式なサポートは,OpenVMS AXP バージョン 6.1 から開始されました。Step 2 ドライバ・インタフェースは C プログラミング言語 (および MACRO と BLISS) でユーザ作成デバイス・ドライバをサポートします。これは OpenVMS Alpha バージョン 1.0 とバージョン 1.5 で提供されていた一時的な Step 1 ドライバ・インタフェースに代わるものです。既存のOpenVMS VAXデバイス・ドライバをAlphaシステム上で実行したい場合で,OpenVMS Alphaバージョン6.1に必要な変更を行っていない場合は,『Creating an OpenVMS Alpha Device Driver from an OpenVMS VAX Device Driver』を参照してください。

C で OpenVMS VAX デバイス・ドライバを作成する機能は,正式にはサポートされません。たとえば,OpenVMS VAX では内部の OpenVMS (lib) データ構造体に対して .h ファイルを提供しません。

Step 2 ドライバ・インタフェースの導入により,OpenVMS Alpha と OpenVMS VAX デバイス・ドライバの相違点が大きくなりました。VAX MACRO または BLISS で作成されたデバイス・ドライバ・ソース・ファイルは,条件付きコンパイルとユーザ作成マクロを使用することにより,OpenVMS Alpha と OpenVMS VAX の間で共通に使用できます。

このアプローチが適切であるかどうかは,個々のドライバの性質に大きく左右されます。(OpenVMS バージョン 7.0 では,64 ビットのサポートにより,相違点がさらに大きくなります。)  OpenVMS Alpha の将来のバージョンでは,入出力(I/O) サブシステムはデバイス・ドライバに影響を与えるような方向にさらに進歩していく可能性があります。この結果,OpenVMS Alpha と OpenVMS VAX のデバイス・ドライバの相違点が大きくなり,共通のドライバ・ソースを維持するのはますます複雑になります。この理由から,長期的に見ると,完全に共通なドライバ・ソース・ファイルを使用するアプローチは適切でないと考えられます。

個々のドライバに応じて,ドライバを共通モジュールとアーキテクチャ固有のモジュールに分割する方法が適している可能性があります。たとえば,ディスク圧縮を行うデバイス・ドライバを作成する場合,圧縮アルゴリズムはアーキテクチャから独立したモジュールに簡単に分離できます。異なる種類のオペレーティング・システム間でいくつかの共通モジュールを作成し,オペレーティング・システム固有のデータ構造体をこのような共通のモジュールから分離することができます。たとえば,OpenVMS,Windows NT,Digital UNIX の間でこのようなアプローチを採用できます。

新しいOpenVMS Alpha のデバイス・ドライバを作成する方法の詳細については,『Writing OpenVMS Alpha Device Drivers in C』を参照してください。

1.3 移行プロセス

VAXプログラムをAlphaシステムで実行するために変換するプロセスは,次の段階に分類されます。

  1. 移行するコードを評価します。

  2. 移行計画を作成します。

  3. 移行環境を設定します。

  4. アプリケーションを移行します。

  5. 移行したアプリケーションをデバッグし,テストします。

  6. 移行したソフトウェアをソフトウェア・システムに統合します。

アプリケーションをOpenVMS Alphaに移行するのに役立つように,多くのツールと弊社によるサービスが提供されます。これらのツールについては,本書で実際のプロセスを説明するときに示します。

1.4 移行の手段

Alphaシステムで実行するためにプログラムを変換する方法としては,次の 2種類の方法があります。

これらの2種類の方法は,図 1-1 に示すとおりです。第 2.2 節 では,移行方式を選択するときに考慮しなければならない事柄を説明しています。

図 1-1 VAXアプリケーションをAlphaシステムに移行する方法


再コンパイルと再リンク

プログラムをOpenVMS VAXからOpenVMS Alphaに変換するための,もっとも効果的な方法は,Alphaコンパイラ(DEC CやDEC Fortranなど)を使用してソース・コードを再コンパイルし,その後,OpenVMS リンカで適切なスイッチとオプション・ファイルを使用して,作成されたオブジェクト・ファイルと必要な他の共有可能なイメージを再リンクする方法です。この方法では,Alphaシステムのスピードを完全に活用できる,ネイティブなAlphaイメージが作成されます。

トランスレーション

VAXシステムとAlphaシステムにはいくつかの相違点がありますが,VAX Environment Software Translator (VEST)を使用すれば,大部分のユーザ・モードの VAXイメージを,Alphaシステムでエラーなしに実行することができます。VESTは DECmigrate for OpenVMS Alphaの一部です。例外については,第 2.3 節 を参照してください。

この方法では,ソースを再コンパイルする場合より高いレベルでVAXとの互換性を維持できますが,トランスレートされたイメージは再コンパイルされたイメージほど高い性能を実現できないため,トランスレーションは,再コンパイルが不可能な場合や実用的でない場合に,代わりとなる安全な手段として使用してください。たとえば,次の状況ではトランスレーションが適しています。

VESTはVAXバイナリ・イメージ・ファイルをネイティブなAlphaイメージにトランスレートします。このイメージは,Alphaシステム上の Translated Image Environment (TIE)のもとで実行されます(TIEは,OpenVMS Alphaでバンドル・ソフトウェアとして提供される共有可能イメージです)。トランスレートされたVAXイメージは,エミュレータやインタプリタのもとで実行されるわけではなく(ただし,一部の例外があります),元のVAXイメージで命令が実行する操作と同じ操作を実行するAlpha命令が,新しいAlphaイメージに盛り込まれるのです。

トランスレートされたイメージをAlphaシステムで実行する速度は,元のイメージを VAXシステムで実行する速度と同じくらいになります。しかし,トランスレートされたイメージは,Alphaアーキテクチャを完全に活用するための最適化コンパイラの恩恵を受けないため,通常,ネイティブなAlphaイメージの速度と比較すると,約25〜40% の速度でしか動作しません。このように性能が低下する主な理由は,データがアラインされていないためと,複雑なVAX命令が広範囲にわたって使用されているためです。

イメージのトランスレーションとVESTについての詳しい説明は,第 3.2.2.1 項 と『DECmigrate for OpenVMS AXP Systems Translating Images』を参照してください。

ネイティブなAlphaイメージとトランスレートされたイメージの混在

1つのアプリケーションを構成するイメージで,2種類の移行方式を混在させて使用できます。また,1つのアプリケーションを,移行の1段階として部分的にトランスレートすることもできます。このようにすれば,完全に再コンパイルする前に,アプリケーションをAlphaハードウェアで実行し,テストできます。1つのアプリケーション内のネイティブなAlphaイメージと,トランスレートされた VAXイメージの相互操作性についての詳しい説明は,第 2.7.2 項 を参照してください。


前へ 次へ 目次 索引