[ 前のページ ] [ 次のページ ] [ 目次 ] [ 索引 ] [ DOC Home ]

9 アプリケーションのトランスレート

この章では,Alphaシステムで実行するために, VAXアプリケーションをトランスレートするときに使用するリソースについて説明します。


9.1 DECmigrate for OpenVMS Alpha

DECmigrate for OpenVMS Alphaは, ソース・コードを入手できないイメージをトランスレートするときに使用します。 DECmigrateのVAX Environment Software Translator (VEST)コンポーネントは, VAXのバイナリ・イメージ・ファイルをネイティブな Alphaイメージにトランスレートします。トランスレートされたイメージは, AlphaコンピュータのTranslated Image Environment(TIE)のもとで動作します (TIEはOpenVMS Alphaオペレーティング・システムで提供される共用可能イメージです)。 トランスレーションでは,エミュレーションやインタプリテーションのもとで OpenVMS VAXイメージを実行することは行われません(ただし,特定の例外があります)。 その代わり,新しいOpenVMS Alphaイメージには,元の OpenVMS VAXイメージの命令が実行していた操作と同じ操作を実行する Alpha命令が含まれます。

トランスレートされたイメージは一般に, VAXコンピュータでオリジナル・イメージを実行するときと同じ速度で, Alphaコンピュータでも動作します。しかし,トランスレートされたイメージは, Alphaアーキテクチャのすべての利点を活用する最適化コンパイラを利用できません。 したがって,トランスレートされたイメージは一般に,ネイティブな OpenVMS Alphaイメージの約25〜40パーセントの速度で動作します。 このように性能が低下する主な理由は,アラインされないデータと複雑な VAX命令を広範囲にわたって使用しているためです。

DECmigrateによるトランスレーション・サポートは,OpenVMS VAXバージョン5.5-2 に存在する言語機能,システム・サービス, 実行時ライブラリ・エントリ・ポイントに制限されています。

DECmigrateのもう1つの機能は,イメージを分析して, Alphaコンピュータで互換性が維持されない部分を識別することです。 このように互換性が維持されない部分は,その種類に応じて, 問題を修正するためにコンパイラ修飾子を指定したり, コードを変更することができます。

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


9.2  DECmigrate:トランスレートされたイメージのサポート

DECmigrateバージョン1.1Aは,OpenVMSバージョン6.1以降を実行する Alphaシステムで動作します。トランスレートされたイメージを実行するには, このバージョンまたはそれ以降のバージョンが必要です。 トランスレートされたイメージは一般に, それ以降のバージョンと互換性を維持しますが, 以前のバージョンとの互換性は維持しません。つまり,DECmigrateバージョン1.1A を使用してトランスレートされたイメージは,OpenVMSバージョン6.1 以降を稼動しているAlphaシステムのみで動作できますが,DECmigrateバージョン1.0 を使用してトランスレートされたイメージは,OpenVMS Alphaバージョン1.0 以降で動作できます。表 9-1は, OpenVMS Alphaシステムの各バージョンと,それをサポートする DECmigrateのバージョンを示しています。

表 9-1  OpenVMS Alpha の各バージョンでのトランスレートされたイメージのサポート

イメージをトランスレートするために使用した DECmigrateのバージョン トランスレートされたイメージに対する OpenVMS Alphaのサポート
バージョン1.0 バージョン1.5 バージョン6.1以降
バージョン1.0 サポートされる サポートされる サポートされる
バージョン1.1 サポートされない サポートされる サポートされる
バージョン1.1A サポートされない サポートされない サポートされる


9.3 Translated Image Environment (TIE)

イメージのトランスレーションは,VAXアプリケーションの一部または全部を OpenVMS Alphaに移行するための1つの手段です。DECmigrate for OpenVMS AXPの VAX Environment Software Translatorユーティリティ(VEST)は, VAX実行可能イメージまたは共用可能イメージを,同等の機能の Alphaイメージに変換することにより,トランスレートされたイメージを作成します。 VESTは,オプションとして提供されるレイヤード製品 DECmigrate for OpenVMS AXPの構成要素です。

トランスレートされたイメージがOpenVMS Alphaで実行される場合には, Translated Image Environment (TIE)がイメージを正しく実行するのに必要な VAX環境を提供します。TIEはTIE$SHAREと TIE$EMULAT_TVという共用可能イメージで構成されます。これらのイメージは VAXの複合命令を実行します。 移行におけるイメージ・トランスレーションの役割については, 『DECmigrate for OpenVMS AXP Systems Translating Images』を参照してください。

この後の節では,次のことについて説明します。

ネイティブなイメージとトランスレートされたイメージの間の相互操作性

TIEはOpenVMS Alphaの他の構成要素と連携動作して, ネイティブなイメージとトランスレートされたイメージが相互に他のイメージを呼び出すことができるようにしています。 相互操作性に依存したアプリケーションやランタイム・ライブラリを開発する場合には, コンパイル,リンク,またはトランスレートを行うときに, 特定の手順に従わなければなりません。 第9.3.1.4項に説明している最初の制限事項を参照してください。

トランスレートされたイメージの実行

トランスレートされたイメージを実行するには,DCLのRUNコマンドを使用します。 次の例を参照してください。

     $ RUN FOO_TV.EXE
OpenVMS Alphaに, 適切なトランスレートされた共用可能イメージと実行時ライブラリが含まれていない限り, トランスレートされたイメージは正しく動作しません。 イメージをトランスレートするときに,VESTは, 入力イメージが参照しているイメージとライブラリに対応するイメージ情報ファイル (IIF-ファイル・タイプは.IIF)を必要とします。これらの.IIFファイルを使用すると, VESTは共用可能イメージとライブラリのトランスレートされたバージョンを正しく参照するトランスレートされたイメージを作成できます。 イメージのトランスレーションで使用されるイメージ情報ファイルは, OpenVMS Alphaで使用できるトランスレートされた共用可能イメージまたは実行時ライブラリのバージョンに正確に対応しなければなりません。

OpenVMS Alphaには,トランスレートされた実行時ライブラリと対応するイメージ情報ファイルがあります。 これらは第9.4節に示すとおりです。 トランスレートして実行するイメージで参照されているライブラリまたは共用可能イメージが含まれているかどうかを判断するには, このリストを確認してください。OpenVMS Alphaに,必要な共用可能イメージまたはライブラリがない場合には, 『DECmigrate for OpenVMS AXP Systems Translating Images』を参照してください。 このマニュアルでは,イメージ情報ファイルの作成方法と使用方法を説明しています。

トランスレートされたライブラリがそのライブラリのネイティブ・バージョンに置き換えられた場合には, そのライブラリを指す論理名を適切に定義しなければなりません。つまり, image_TVimageに再定義しなければなりません。

TIE統計情報とフィードバック

TIEの実行時サポート機能の他に,TIEの統計情報とフィードバックを使用すると, トランスレートされたイメージの性能を向上するのに役立ちます。

『DECmigrate for OpenVMS AXP Systems Translating Images』では, これらの機能について詳しく説明しており,また, これらの機能の使用を有効または無効に設定するための論理名の定義方法についても説明しています。


9.3.1 問題点と制限事項

この節では,TIEの問題点と制限事項について説明します。


9.3.1.1 条件ハンドラに関する制限事項

ネイティブ・イメージとトランスレートされたイメージの両方に対して設定できる条件ハンドラのタイプには, 永久的な制限事項があります。ネイティブ・ルーチンは, トランスレートされた条件ハンドラを設定することができず, トランスレートされたルーチンはネイティブな条件ハンドラを設定できません。 ネイティブ・イメージまたはトランスレートされたイメージがこの制限に違反すると, 実行時の結果は予測できなくなります。


9.3.1.2 例外ハンドラに関する制限事項

次の例外ハンドラの制限事項は永久的なものです。


9.3.1.3 浮動小数点に関する制限事項

次の浮動小数点の制限事項は永久的なものです。


9.3.1.4 相互操作性に関する制限事項

相互操作性に関して,次の制限事項に注意してください。


9.3.1.5 VAX C:トランスレートされたプログラムの制限事項

次のトランスレートされたVAX Cプログラムの制限事項は永久的なものです。


9.4 トランスレートされたイメージのサポート

トランスレーション・サポートは,ユーザがAlphaに移行する際に発生する障 害を削減するために提供されています。それは次の理由によるものです。

VAXバージョンが現在も活発に開発されている言語に対して,ネイティブな Alphaバージョンも提供されています。TIEは,OpenVMS VAXバージョン5.5-2 のリリースの時点で提供されていた言語機能をサポートできるように維持管理されています。

同様に,システム・サービスや実行時ライブラリのエントリ・ポイントの使用が, OpenVMS VAXバージョン5.5-2で提供されていたものに制限されているイメージに対しては, トランスレーションがサポートされます。

もっと新しいVAXレイヤード製品がインストールされている場合には, アプリケーションでトランスレーションに適したイメージを再構築することが必要なときに, いくつかの追加手順が必要になることがあります。たとえば, OpenVMS VAX用のDECwindows Motifバージョン1.2またはバージョン1.2-3では, トランスレーションにとって適切であるように,OSF Motifバージョン 1.2.2やバージョン1.2.3のライブラリではなく,OSF Motifバージョン 1.1.3ライブラリまたはDECwindows XUIライブラリを使用してイメージを作成しなければなりません。

同様に,DEC Fortran for VAXの最近のバージョンを使用するイメージの場合, トランスレーションに適した Fortranプログラムをコンパイルするために追加の修飾子が必要です。

詳細については,それぞれのVAX製品のリリース・ノートを参照してください。

OpenVMS VAXイメージを将来,再構築したり, 再トランスレーションしなければならない状況では,安全措置として,関連する OpenVMS VAXバージョン5.5-2共用可能イメージのコピーを別の VAXディレクトリに保存し,これらのイメージに対して VAXアプリケーションの新しいバージョンをリンクするようにしてください。 この手法を使用する場合,作成されるイメージは新しい OpenVMS VAX共用可能イメージと互換性があり( OpenVMSの既存の機能を拡張した機能を使用できます),また,OpenVMS Alphaにトランスレーションするためにイメージを正しく構築できます( 共用可能イメージの新しいバージョンは必要ありません)。

この後の節では,トランスレートされたイメージ,イメージ情報ファイル, およびOpenVMS Alphaで提供されるその他の関連ファイルについて説明します。

OpenVMS Alphaには,トランスレートされたメッセージ・イメージはありません。 メッセージ・イメージはすべて,ネイティブ・イメージとして作成されます。

SYS$LIBRARY:内のトランスレートされたイメージ

BASRTL2_D53_TV.EXE
BASRTL2_D56_TV.EXE
BASRTL_D56_TV.EXE
BASRTL_TV_SUPPORT.EXE
BLAS1RTL_D53_TV.EXE
BLAS1RTL_D56_TV.EXE
COBRTL_D56_TV.EXE
DBLRTL_D56_TV.EXE
EDTSHR_TV.EXE
FORRTL2_TV.EXE
FORRTL_D56_TV.EXE
LIBRTL2_D56_TV.EXE
LIBRTL_D56_TV.EXE
MTHRTL_D53_TV.EXE
MTHRTL_D56_TV.EXE
PASRTL_D56_TV.EXE
PLIRTL_D56_TV.EXE
RPGRTL_TV.EXE
SCNRTL_TV.EXE
TECOSHR_TV.EXE
TIE$EMULAT_TV.EXE
UVMTHRTL_D53_TV.EXE
UVMTHRTL_D56_TV.EXE
VAXCRTLG_D56_TV.EXE
VAXCRTL_D56_TV.EXE
VMSRTL_TV.EXE

SYS$SYSTEM:内のトランスレートされたイメージ

DBLMSGMGR_TV.EXE
EDF_TV.EXE
EDT_TV.EXE
MONITOR_TV.EXE
TECO32_TV.EXE

IMAGELIB:内のトランスレートされたRTLイメージ

BASRTL2_D53_TV.EXE
BASRTL_D56_TV.EXE
BLAS1RTL_D53_TV.EXE
COBRTL_D56_TV.EXE
DBLRTL_D56_TV.EXE
FORRTL2_TV.EXE
FORRTL_D56_TV.EXE
LIBRTL_D56_TV.EXE
PLIRTL_D56_TV.EXE
RPGRTL_TV.EXE
SCNRTL_TV.EXE
トランスレートされたRTLの大部分は,D53形式ではなく,D56形式で提供されます。 一部は両方の形式で提供されます。両方の形式が提供される場合には, 省略時の形式はD53です。トランスレートされた実行時ライブラリの詳細については, 第9.5節を参照してください。

SYS$LIBRARY:内のイメージ情報ファイル

ACLEDTSHR.IIF
BASRTL2.IIF
BASRTL.IIF
BLAS1RTL.IIF
COBRTL.IIF
CONVSHR.IIF
CRFSHR.IIF
DBLRTL.IIF
DCXSHR.IIF
DISMNTSHR.IIF
DTKSHR.IIF
EDTSHR.IIF
ENCRYPSHR.IIF
EPC$SHR.IIF
FDLSHR.IIF
FORRTL.IIF
FORRTL2.IIF
INIT$SHR.IIF
LBRSHR.IIF
LIBRTL.IIF
LIBRTL2.IIF
MAILSHR.IIF
MOUNTSHR.IIF
MTHRTL.IIF
NCSSHR.IIF
P1_SPACE.IIF
PASRTL.IIF
PLIRTL.IIF
PPLRTL.IIF
PTD$SERVICES_SHR.IIF
RPGRTL.IIF
S0_SPACE.IIF
SCNRTL.IIF
SCRSHR.IIF
SECURESHR.IIF
SMBSRVSHR.IIF
SMGSHR.IIF
SORTSHR.IIF
SPISHR.IIF
TECOSHR.IIF
TPUSHR.IIF
UVMTHRTL.IIF
VAXCRTL.IIF
VAXCRTLG.IIF
VMSRTL.IIF

システム論理名の定義

次のシステム論理名は, トランスレートされた環境を使いやすくするために定義されています。

ACLEDTSHR_TV = ACLEDTSHR
CDDSHR_TV = CDDSHR
CONVSHR_TV = CONVSHR
CRFSHR_TV = CRFSHR
DCXSHR_TV = DCXSHR
DISMNTSHR_TV = DISMNTSHR
DTKSHR_TV = DTKSHR
ENCRYPSHR_TV = ENCRYPSHR
EPC$SHR_TV = EPC_SHR
FDLSHR_TV = FDLSHR
INIT$SHR_TV = INIT$SHR
LBRSHR_TV = LBRSHR
MAILSHR_TV = MAILSHR
MOUNTSHR_TV = MOUNTSHR
NCSSHR_TV = NCSSHR
PPLRTL_TV = PPLRTL
PTD$SERVICES_SHR_TV = PTD$SERVICES_SHR
SCRSHR_TV = SCRSHR
SECURESHR_TV = SECURESHR_JACKET
SMBSRVSHR_TV = SMBSRVSHR
SMGSHR_TV = SMGSHR
SORTSHR_TV = SORTSHR
SPISHR_TV = SPISHR
TPUSHR_TV = TPUSHR

BASRTL_TV = BASRTL_D56_TV
BASRTL2_TV = BASRTL2_D53_TV
BLAS1RTL_TV = BLAS1RTL_D53_TV
COBRTL_TV = COBRTL_D56_TV
DBLRTL_TV = DBLRTL_D56_TV
FORRTL_TV = FORRTL_D56_TV
LIBRTL_TV = LIBRTL_D56_TV
LIBRTL2_TV = LIBRTL2_D56_TV
MTHRTL_TV = MTHRTL_D53_TV
PASRTL_TV = PASRTL_D56_TV
PLIRTL_TV = PLIRTL_D56_TV
VAXCRTL_TV = VAXCRTL_D56_TV
VAXCRTLG_TV = VAXCRTLG_D56_TV

DBLMSGMGR = DBLMSGMGR_TV
EDTSHR_TV = EDTSHR
TECO32 = TECO32_TV
TECOSHR = TECOSHR_TV
VMSRTL = VMSRTL_TV

DBLRTLMSG = DBL$MSG
PASMSG = PAS$MSG
PLIMSG = PLI$MSG
RPGMSG = RPG$MSG
SCNMSG = SCN$MSG
VAXCMSG = DECC$MSG


9.5 トランスレートされた実行時ライブラリ

OpenVMS Alphaキットの一部として, DECはトランスレートされた実行時ライブラリを提供しています。

VAX実行時ライブラリのルーチンの一部は,倍精度算術演算に対してVAX D浮動小数点データ型を使用します。

これらのライブラリのトランスレートされたバージョンでは,省略時の設定では, AlphaのD56 D浮動小数点データ型が使用されます(VAX実行時ライブラリでは D浮動小数点を使用していました)。この結果,VAX D浮動小数点の 56ビットの仮数部の完全な精度が提供されるため,実行時の性能は低下しますが, 一貫性のある結果が求められます。

性能が重要な算術演算関連のライブラリの場合には,倍精度演算に対して AlphaのD53 D浮動小数点データ型を使用する, トランスレートされた実行時ライブラリのバージョンも提供しています。 これらのライブラリの場合,省略時の設定はD53形式です。D53形式は, 仮数部の下位3ビットの精度を犠牲にして性能を向上します。

次のトランスレートされたライブラリは,D56形式でのみ提供されます。

次のトランスレートされたライブラリは,D56形式とD53形式 (省略時の設定)の両方で提供されます。

実行時ライブラリのD56形式へのアクセス

実行時ライブラリを使用する場合には,省略時の設定により,次の処理が行われます。

一部のユーザはD56浮動小数点の完全な精度を必要とします。しかし, D56ルーチンを使用すると,性能が大幅に低下します。 D56ルーチンにアクセスするには,表 9-2に示すように, D56形式を指す実行時ライブラリの論理名を再定義しなければなりません。 サイトの必要に応じて,論理名はプロセス単位で定義するか, またはシステム単位で定義できます。

表 9-2 実行時ライブラリの論理名

ライブラリ 論理名 D56ルーチンの名前
BASRTL2 BASRTL2_TV BASRTL2_D56_TV
BLAS1RTL BLAS1RTL_TV BLAS1RTL_D56_TV
MTHRTL MTHRTL_TV MTHRTL_D56_TV


9.5.1  CRF$FREE_VMとCRF$GET_VM:トランスレートされた呼び出しルーチン

トランスレートされたルーチンからCRF$FREE_VMとCRF$GET_VMを呼び出す場合, トランスレートされた呼び出し側は正しく機能しません。 トランスレートされた呼び出し側はVAX JSBのセマンティックを期待していますが, ネイティブ・コードには(当然のことながら) Alpha JSBセマンティックが存在します。

この問題を回避するには,トランスレートされた呼び出し側はJSBではなく, CALLを使用しなければなりません。


9.6 トランスレートされたVAX C実行時ライブラリ

この後の節では,トランスレートされた VAX C実行時ライブラリに関連するリリース・ノートを示します。


9.6.1 問題点と制限事項

この節では,OpenVMS AlphaのトランスレートされたVAX C実行時ライブラリ (VAX C RTL)で報告されている問題点と制限事項について説明します。


9.6.1.1 機能上の制限事項

トランスレートされたVAX C RTLは,OpenVMS VAXバージョン5.4の VAX C RTLのトランスレートされたバージョンです。 VAX C RTLのそのリリースに存在する問題と制限事項はすべて, トランスレートされたVAX C RTLにもそのまま存在します。トランスレートされた VAX C RTLの機能上の制限事項は次のとおりです。


9.6.1.2 相互操作性に関する制限事項

トランスレートされたVAX C RTLがネイティブなDEC C RTLと相互操作する場合には, 次の制限事項が適用されます。

これらの制限された処理を実行するプログラムでは,アクセス違反が発生するか, またはその他の例外が発生します。このような制限された操作を検出し, 実行されないようにするために,徹底的なテストを行ってください。


9.7 トランスレートされたVAX COBOLプログラム

OpenVMS Alphaオペレーティング・システムでは,VAX COBOLバージョン5.0 コンパイラ(またはそれ以前のコンパイラ)を使用してコンパイルされ, トランスレートされたVAX COBOLプログラムの実行をサポートします。


9.7.1 問題点と制限事項

VAX COBOLバージョン5.1コンパイラでコンパイルされたプログラムは, OpenVMS Alphaオペレーティング・システムでサポートされません。


[ 前のページ ] [ 次のページ ] [ 目次 ] [ 索引 ] [ DOC Home ]