日本-日本語
≫  お問い合わせ

製品とサービス >  ソフトウェアとOS >  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 へのアプリケーションの移行


目次 索引



アプリケーションを再コンパイルできない場合や,VAXアーキテクチャ固有の機能をアプリケーションで使用している場合には,アプリケーションをトランスレートすることができます。アプリケーションの一部だけのトランスレートもでき,移行プロセスの一段階として一時的にアプリケーションの各部分をトランスレートすることができます。

再コンパイルに影響を与える多くの相違点について 第 2.4 節 で説明しましたが,これらの相違点は,トランスレートされたVAXイメージの性能にも影響を与える可能性があります。次の方法を使用すれば,VAXアーキテクチャに依存するイメージの互換性を向上できます (詳しくは『DECmigrate for OpenVMS AXP Systems Translating Images』を参照してください)。

  • データ・アラインメント
    VESTのトランスレート時修飾子/OPTIMIZE=NOALIGNMENTを使用すれば,VESTは特別なインラインのAlphaコードを生成し,アラインされていないデータの参照に対する例外を生成しないようにします。この修飾子を使用した場合,VESTは,アラインされたデータ参照だけを使用するコードよりも実行速度が約10倍も遅いAlphaコードを作成します(省略時のオプションである/OPTIMIZE=ALIGNMENTを使用した場合には,アラインされていないデータは例外を生成しますが,この結果,アラインされたデータを実行する場合より約100倍の時間がかかります)。

  • 命令の不可分性
    トランスレータを起動するときに,トランスレート時修飾子 /PRESERVE=INSTRUCTION_ATOMICITYを指定すれば,VESTは,指定したVAX命令セットに対してASTが不可分に実行されるようなAlpha命令シーケンスを作成します。 ASTは,このような不可分な操作を実行するAlpha命令シーケンスの途中でも受け付けることができますが,ASTルーチンが終了したときに,命令シーケンスは最初から再起動されます。このため,/PRESERVE=INSTRUCTION_ATOMICITY修飾子を指定した場合,特定のコード・シーケンスの実行速度は半分に低下する可能性があります(トランスレータがASTの不可分なコードを生成するVAX命令の一覧と,ソフトウェア・トランスレータについての詳しい情報については,『DECmigrate for OpenVMS AXP Systems Translating Images』を参照してください)。

  • 読み込み/書き込みの粒度
    トランスレート時修飾子/PRESERVE=MEMORY_ATOMICITYを使用した場合,VESTは,バイト書き込みまたはワード書き込みの不可分性を保証します。この修飾子を指定すれば,メインライン・ルーチンとASTルーチンはロングワードまたはクォドワードに格納されている隣接するバイトを相互に妨害せずに更新できます。 /PRESERVE=MEMORY_ATOMICITY修飾子は,自然にアラインされていないロングワードおよびクォドワード境界と交差するデータの不可分なアクセスを保証します。ただし,これらの修飾子を指定した場合,実行速度は半分に低下する可能性があります。

  • ページ・サイズとゆるやかな保護
    VAXイメージをAlphaシステムで実行できるようにするために,VESTとイメージ・アクティベータは,VAXイメージ・セクションを大きいページにマッピングします。 8KBページをサポートするAlphaプロセッサでは,最大16ページのVAXページを1ページに格納できます。しかし,この大きいページは1つのページ・テーブル・エントリによってのみ記述されるため,そのページには1つの保護と1つのバッキング・ストアだけしか割り当てることができません。したがって,VESTが Alphaページに割り当てる保護は,マッピングするAlphaイメージ・セクションに関連する保護のうち,もっとも制限のゆるやかな保護です。このため,アクセス違反を検出するために厳しい保護に依存している VAXイメージは,トランスレートされた場合, Alphaシステムで正しく実行されません。
    この問題に対処するための方法として,省略時のリンカ・オプション/BPAGEを使用して VAXでプログラムを再リンクし,ページを64KB境界にアラインする方法があります。

  • 正確な算術演算例外
    VESTでは,トランスレート時に/PRESERVE=FLOAT_EXCEPTIONS修飾子または /PRESERVE=INTEGER_EXCEPTIONS修飾子を使用することにより,特定の例外タイプに対して正確な例外報告を設定できます。これらの修飾子を指定した場合には,一部のコード・セグメントの実行速度は半分に低下します。

  • VAX命令の実行時作成
    実行時に作成されるVAX命令は,トランスレーションのもとでエミュレーションによって実行されます。しかし,エミュレートした命令はトランスレートされた命令より大幅に実行速度が遅く,アプリケーションの重要な部分の性能を向上するために実行時にコードを生成する場合,これは問題になります。

アーキテクチャ上のさまざまな相違点がイメージのトランスレートによってどのようにサポートされるかについては, 表 2-3 を参照してください。

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

一般に,AlphaシステムではネイティブなAlphaイメージとトランスレートされたイメージを組み合わせて使用できます。たとえば,ネイティブなAlphaイメージからトランスレートされた共有可能イメージを呼び出したり,その逆の呼び出しを実行できます。

ネイティブなイメージとトランスレートされたイメージを組み合わせて実行するには, VAX呼び出し規則とAlpha呼び出し規則の間で呼び出しを実行できなければなりません。ネイティブ・イメージとトランスレートされたイメージが次の条件を満たす場合には,特別な処理は必要ありません。

  • ネイティブなAlphaイメージのルーチン・インターフェイス・セマンティックとデータ・アラインメント規則がVAXイメージのこれらのセマンティックおよび規則と等しいこと。

  • すべてのエントリ・ポイントがCALLxであること。つまり,外部JSBエントリ・ポイントが存在しないこと。高級言語で作成されたコードの場合には,この条件は満たされます。

  • ネイティブなイメージでのインバウンド呼び出しとアウトバウンド呼び出しは Ada では書かれていません。

一方の呼び出し規則を使用するプロシージャ(呼び出し元)が別の呼び出し規則を使用するプロシージャ(呼び出し先)を呼び出す場合には, ジャケット・ルーチンを使用して間接的に呼び出します。ジャケット・ルーチンはプロシージャのコール・フレームと引数リストを解釈し,呼び出し先プロシージャの対応するコール・フレームと引数リストを作成し,制御を呼び出し先プロシージャに渡します。呼び出し先プロシージャが実行を終了すると,ジャケット・ルーチンを通じて,制御を呼び出し元に戻します。ジャケット・ルーチンは呼び出し先ルーチンのリターン・レジスタの値を呼び出し元ルーチンのレジスタに書き込み,制御を呼び出し元プロシージャに戻します。

OpenVMS Alphaオペレーティング・システムは,ほとんどの呼び出しに対してジャケット・ルーチンを自動的に作成します。自動的なジャケット機能を使用するには,アプリケーションの中でネイティブなAlphaの部分を作成するときに,コンパイラ修飾子/TIEとリンカ・オプション/NONATIVE_ONLYを使用してします。

特定の場合には,アプリケーション・プログラムは特別に作成したジャケット・ルーチンを使用しなければなりません。 たとえば,次のようなライブラリに対する非標準呼び出しの場合には,ジャケット・ルーチンを作成しなければなりません。

  • 外部JSBエントリ・ポイントを含むVAX共有可能ライブラリ

  • 転送ベクタに読み込み/書き込みデータを含むライブラリ

  • VAX固有の関数を登録したライブラリ

  • ライブラリのネイティブ・バージョンとトランスレートされたバージョンの間で共有しなければならない資源を使用するライブラリ

  • VAXイメージが提供していたすべてのシンボルを提供またはエクスポートしないネイティブなAlphaライブラリ
    (エクスポートという用語は,ルーチンがイメージのグローバル・シンボル・テーブル (GST)に登録されたことを意味します。)

これらの状況でジャケット・イメージを作成する方法については,『DECmigrate for OpenVMS AXP Systems Translating Images』を参照してください。

OpenVMS Alphaオペレーティング・システムとともに提供されるトランスレートされた共有可能イメージ(たとえば,ネイティブなAlphaコンパイラのない言語のランタイム・ライブラリなど)には,ジャケット・ルーチンが添付されており,これらのジャケット・ルーチンを使用すれば,トランスレートされた共有可能イメージをネイティブなAlphaイメージから呼び出すことができます。


目次 索引

印刷用画面へ
プライバシー 本サイト利用時の合意事項 ウェブマスターに連絡