日本-日本語

製品  >  ソフトウェア  >  OpenVMS  >  マニュアル

OpenVMS マニュアル


≫ 

OpenVMS V8.3
ライブラリ

タイトルページ
目次
まえがき
第 1 章:移行プロセスの概要
第 2 章:移行方法の選択
第 3 章:アプリケーションの移行
第 4 章:再コンパイルと再リンクの概要
第 5 章:ページ・サイズの拡大に対するアプリケーションの対応
第 6 章:共有データの整合性の維持
第 7 章:アプリケーション・データ宣言の移植性の確認
第 8 章:アプリケーション内の条件処理コードの確認
第 9 章:アプリケーションのトランスレート
第 10 章: ネイティブなイメージとトランスレートされたイメージの間の相互操作性の確認
第 11 章:OpenVMS Alpha コンパイラ
付録 A :アプリケーション評価チェックリスト
用語集
索引
PDF
OpenVMS ホーム
OpenVMS Alpha オペレーティング・システム | HPE 日本

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


目次 索引

第 1 章
移行プロセスの概要

多くのアプリケーションにとって,OpenVMS VAXからOpenVMS Alphaへの移行 (migration)は簡単です。 アプリケーションがユーザ・モードでのみ実行され,標準的な高級言語で作成されている場合には,ほとんどの場合,Alphaコンパイラを使用してそのアプリケーションを再コンパイルし,再リンクすることにより, Alphaシステムで実行可能なバージョンを作成できます。本書では,移行するアプリケーションを評価する方法,およびもっと複雑で特殊な場合の対処方法について説明します。

1.1 VAXシステムとAlphaシステムの互換性

OpenVMS Alphaオペレーティング・システムは,OpenVMS VAXのユーザ,システム管理,およびプログラミングの環境とできるだけ互換性 ( compatibility ) を維持するように設計されています。一般的なユーザとシステム管理者にとって, OpenVMS Alpha は OpenVMS VAX と同じインタフェースを備えています。プログラマにとっての目標は,「再コンパイル,再リンク,実行」という移行のモデルにできるだけ近づけることです。

OpenVMS VAXシステムで動作しているアプリケーションの場合,ほとんどの部分は OpenVMS Alphaシステムでも変更されません。

ユーザ・インタフェース

  • DIGITALコマンド言語(DCL)
    DIGITAL コマンド言語 (DCL) は OpenVMS に対する標準的なユーザ・インターフェイスであり,OpenVMS Alpha でも変更されません。OpenVMS VAX で使用できるすべてのコマンド,修飾子,およびレキシカル関数は OpenVMS Alpha でも使用できます。

  • コマンド・プロシージャ
    OpenVMS VAXの以前のバージョンを対象に作成されたコマンド・プロシージャは, OpenVMS Alphaシステムでもまったく変更せずに動作します。しかし,ビルド・プロシージャなどのある特定のコマンド・プロシージャは,新しいコンパイラ修飾子やリンカ・スイッチに対応できるように変更しなければならないことがあります。リンカ・オプション・ファイルも変更が必要な場合があり,特に共用可能イメージ ( shareable image ) の場合は変更が必要となります。

  • DECwindows
    ウィンドウ・インタフェースである DECwindows Motif は変更されません。

  • DECforms
    DECformsインターフェイスは変更されません。

  • エディタ
    2つの標準的なOpenVMSエディタであるEVEとEDTは変更されません。

システム管理インタフェース

システム管理ユーティリティはほとんど変更されません。ただし,おもな例外が 1つあります。それはデバイス構成管理機能で,OpenVMS VAXシステムでは System Generation ユーティリティ (SYSGEN) で提供される機能ですが, OpenVMS Alphaでは System Management ユーティリティ (SYSMAN) で提供されます。

プログラミング・インタフェース

概して,システム・サービスおよびランタイム・ライブラリ(RTL)呼び出しインタフェースは変更されません。 1  引数の定義を変更する必要はありません。相違点がいくつかありますが,これらの相違点は,次の2種類に分類されます。

  • 一部のシステム・サービスとランタイム・ライブラリ・ルーチン(メモリ管理システムと例外処理サービス)は,VAXシステムとAlphaシステムとでは,少し異なる方法で動作します。詳しくは『OpenVMS System Services Reference Manual』と『OpenVMS RTL Library (LIB$) Manual』を参照してください。

  • 一部のランタイム・ライブラリ・ルーチンはVAXアーキテクチャに密接に関係しており, Alphaシステムでは意味がありません。これらのルーチンは次のとおりです。

    ルーチン名 制約事項
    LIB$DECODE_FAULT VAX命令をデコードする
    LIB$DEC_OVER VAXプロセッサ・ステータス・ロングワード(PSL) のみに適用される
    LIB$ESTABLISH Alphaシステムでは,類似する機能をコンパイラがサポートする
    LIB$FIXUP_FLT VAX PSLのみに適用される
    LIB$FLT_UNDER VAX PSLのみに適用される
    LIB$INT_OVER VAX PSLのみに適用される
    LIB$REVERT Alphaシステムではコンパイラがサポートする
    LIB$SIM_TRAP VAXコードに適用される
    LIB$TPARSE 動作ルーチンのインタフェースの変更が必要である。LIB$TABLE_PARSEに置換されている

これらのサービスとルーチンを呼び出すVAXイメージの大部分は, VEST (VAX Environment Software Translator) を使ってトランスレートし, OpenVMS AlphaのTIE (Translated Image Environment) のもとで実行すれば,正しく動作します。TIE についての詳しい説明は, 第 3.2.2.1 項 と『DECmigrate for OpenVMS AXP Systems Translating Images』を参照してください。

データ

ODS-2データ・ファイルのディスク上でのフォーマットは,VAXシステムとAlphaシステムとで同じです。しかし,ODS-1ファイルはOpenVMS Alphaでサポートされません。
レコード管理サービス(RMS)とファイル管理インタフェースは変更されていません。
IEEEリトル・エンディアン・データ型であるS浮動小数点 ( S_floating ) と T浮動小数点 ( T_floating ) が追加されました。
大部分のVAXデータ型はAlpha Alphaアーキテクチャでもそのまま使用できます。しかし,システム全体の性能を向上するために,H浮動小数点( H_floating ) と完全な精度のD浮動小数点 ( D_floating ) のハードウェアによるサポートはなくなりました。
AlphaハードウェアはD浮動小数点データを処理のためにG浮動小数点に変換します。 VAXシステムでは,D浮動小数点は56ビット(D56)であり,16桁の精度です。 Alphaシステムでは,D浮動小数点は53ビット(D53)であり,15桁の精度です。
H浮動小数点データ型とD浮動小数点データ型は通常,G浮動小数点または IEEEフォーマットのいずれかに変換されます。しかし,H浮動小数点が必要な場合や, D56 (56ビットのD浮動小数点)の精度が必要な場合には,アプリケーションの一部をトランスレートしなければなりません。

データベース

標準的な弊社のデータベースは,VAXシステムとAlphaシステムで同様に機能します。

ネットワーク・インタフェース

VAXシステムとAlphaシステムはどちらも次のインタフェースをサポートします。

  • インターコネクト

    • Ethernet

    • X.25

    • FDDI

  • プロトコル

    • DECnet (バージョン7.1 のフェーズIV; オプションの DECnet-Plus キットのフェーズV)

    • TCP/IP

    • OSI

    • LAD/LAST

    • LAT (ローカル・エリア・トランスポート)

  • 周辺装置接続

    • TURBOchannel

    • SCSI

    • Ethernet

    • CI

    • DSSI

    • XMI

    • Futurebus/Plus

    • VME

    • PCI

注意

1 バージョン 7.0 では, OpenVMS Alpha は 64 ビット・アドレッシングをサポートするために,多くのシステム・サービスと RTL ルーチンを提供します。これは VAX システムでは提供されません。したがって VAX から 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アーキテクチャではかなり単純な命令を使用しており,これらはすべて 32ビットの長さです。これらの共通の命令は1クロック・サイクルだけを必要とします。このようにサイズが統一された単純な命令の採用により, 複数命令発行 (mullti-instruction issue) や最適化された命令スケジューリングなどの方式を採用でき,その結果,きわめて高い性能を実現できます。

  • 複数命令発行
    初期の Alpha プラットフォームは,1 クロック・サイクルで 2 つの命令を出しました。現在のシステム (EV5 以上) では,1クロック・サイクルに4つの命令を出します。

  • ロード/ストア操作モデル
    Alphaアーキテクチャでは,32個の64ビット整数レジスタと,32個の64ビット浮動小数点レジスタを定義しています。大部分のデータ操作は,レジスタ間で実行されます。操作の前に,オペランドがメモリからレジスタにロードされます。操作が終了した後,結果はレジスタからメモリにストア(格納)されます。
    このように操作をレジスタ・オペランドに制限すれば,単純で統一された命令セットを使用できます。さらに,メモリ・アクセスを算術演算から分離することにより,完全なパイプライン,命令スケジューリング,および並列操作ユニットを実現できるシステムとして,大幅に性能を向上できます。

  • マイクロコードの排除
    Alphaアーキテクチャではマイクロコードを使用しないため,Alphaプロセッサはマシン命令を実行するために,ランダム・アクセス・メモリ(RAM)からマイクロコード命令をフェッチするのに必要な時間を削減できます。

  • 命令のランダムな終了
    Alpha アーキテクチャでは,命令が発行された順番に完了することは保証されません。その結果として,算術演算例外や浮動小数点例外は,最適化された命令列を乱さないように,少し時間をおいて報告されます。

Alpha固有の特性

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

  • H浮動小数点とD浮動小数点を除き,他のすべてのVAXデータ型に対するハードウェア・サポート(アプリケーションでH浮動小数点,またはD浮動小数点データを使用しているときに,どのような処理を実行しなければならないかについては, 第 2.5.2 項 を参照してください)。

  • 4種類のプロセッサ・モード(ユーザ,スーパーバイザ,エグゼクティブ,およびカーネル)などの特定の特権付きアーキテクチャ機能,32段階の割り込み優先順位レベル( IPL, Interrupt Priority Level ),および非同期システム・トラップ(AST)。

  • 特権付きアーキテクチャ・ライブラリ(PAL)はPALcodeと呼ばれる環境の一部であり,チェンジ・モード (CHMx),プローブ(PROBEx),キュー命令,REIなど,特定のVAX命令に対応する不可分な実行をサポートします。
    Alpha アーキテクチャは特定のオペレーティング・システムにだけ対応するわけではありません。異なるオペレーティング・システムに対応できるように,特権アーキテクチャ・ライブラリ・コード (PALcode) を作成できます。
    さらに,C や MACRO--32 コンパイラなどのように,特定の OpenVMS Alpha コンパイラは PALcode組み込み関数を提供しており,Alpha 命令セットで提供される命令を補足します。たとえば,MACRO--32 コンパイラは,Alpha に対応する命令のない VAX 命令をエミュレートする組み込み関数を提供します。
    PALcodeを使用すると,内部ハードウェア・レジスタと物理メモリにアクセスします。PALcodeは物理メモリと仮想メモリの直接的な対応関係を提供できます。PALcodeの詳細については,『Alpha Architecture Reference Manual』を参照してください。



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』を参照してください。


目次 索引

印刷用画面へ
プライバシー 本サイト利用時の合意事項