HP OpenVMS
HP OpenVMS
OpenVMS Alpha から OpenVMS I64 へのアプリケーション・ポーティング・ガイド
3.2.1 ポーティング方法の選択
以下の各項で説明する評価プロセスを完了したら,実際にアプリケーションと開発環境のポーティングを行います。ソース・モジュールの他に,ビルド・プロシージャやテスト・ツール,場合によってはアプリケーションのデータ構造など,その他のコンポーネントについてもポーティングが必要になる場合があります。アプリケーションの各要素に最適なポーティング方法を選択する必要があります。一般に問題となるのは,アプリケーションをソースから再ビルドするのか,バイナリ・トランスレータを使用するのかという点です。この判断を下すには,アプリケーションの各要素に対して使用可能な方法と,それらに必要となる作業量を把握しておく必要があります。これらの疑問に答えるには,
図 3-1 に示す一連の質問に答え,各作業を行う必要があります。
ほとんどのアプリケーションは,再コンパイルと再リンクを実行することによりポーティングが可能です。ユーザ・モードのみで動作し,標準的な高級言語で書かれているアプリケーションは,ほとんどの場合,このカテゴリに分類されます。
図 3-1 アプリケーションのポーティング
3.2.2 ポーティングが必要なアプリケーションの洗い出し
ポーティングのためのアプリケーション評価の最初のステップでは,ポーティングが必要となる対象を正確に洗い出します。アプリケーションだけでなく,アプリケーションを正常に実行するのに必要なあらゆる要素を洗い出す必要があります。アプリケーションの評価を開始するには,まず,以下の要素の場所を確認します。
- メイン・プログラムのソース・モジュール
- 共有イメージ
- オブジェクト・モジュール
- ライブラリ (オブジェクト・モジュール,共有イメージ,テキスト,またはマクロ)
- データ・ファイルとデータベース
- メッセージ・ファイル
- スクリプトとプロシージャ (ビルド・ファイル)
- アプリケーション・ドキュメント (用意されている場合)
第 2 章 で説明した OpenVMS Alpha と OpenVMS I64 の相違点を考慮し,実際にポーティングを開始する前に,アプリケーション・コンポーネントに対して必要となる変更について把握します。さらに, 第 7 章 で説明する CPU の違いによる開発上の問題点も考慮してください。
これらの変更に必要な時間とコストを評価します。 OpenVMS Alpha アーキテクチャに特に依存するコードは,変更する必要があります。たとえば,アプリケーションに以下のようなコードが含まれている場合は,変更が必要です。
- 特定のマシン・インストラクションを操作したり,レジスタの数や特定のレジスタの機能を前提にしているコード。
- OpenVMS Alpha の呼び出し規則の特定の要素に依存しているコード。
OpenVMS Alpha と OpenVMS I64 の呼び出し規則の相違点については,
第 2.1.1 項 を参照。
- 未公開のシステム・サービスやライブラリ・インタフェースに依存しているコード,または OpenVMS I64 で提供されていないか,提供されていても動作が異なる特定のシステム・インタフェースやライブラリ・インタフェースに依存しているコード。
特定のシステム・インタフェースおよびライブラリ・インタフェースが提供されているかどうか,および動作が異なるかどうかについては, 第 4 章 と 第 5 章 を参照。
- OpenVMS Alpha のオブジェクト・ファイルの形式,実行イメージ・ファイルの形式,またはデバッグ・シンボル・テーブルの形式に依存しているコード。
- 条件付きコード,あるいは OpenVMS VAX または OpenVMS Alpha システムで実行されることを前提にしており,それ以外のプラットフォームを取り扱うことができないようなロジックを含むコード。
- 以下に示すような,OpenVMS Alpha または OpenVMS VAX の内部データ構造に依存しているコード。
- IEEE 標準に準拠しない浮動小数点形式 (IEEE 浮動小数点形式は OpenVMS I64 のデフォルトであり, VAX 浮動小数点形式が不要な場合はこの形式を使用すべきです。詳細については, 第 3.2.4 項 と 第 4.8.4 項 を参照)。
- OpenVMS I64 のメカニズム・アレイ・データ構造は, OpenVMS Alpha と大きく異なります ( 第 4.8.3.3 項 を参照)。
注意
データ参照のパフォーマンスを向上するために,データは自然なアラインメントにすることをお勧めします。 OpenVMS Alpha システムでも OpenVMS I64 システムでも,アラインメントされていないデータを参照すると,パフォーマンスが大幅に低下します。さらに,アラインメントされていない共有データがあると,プログラムを正常に実行できないこともあります。共有データは自然なアラインメントにする必要があります。共有データは,シングル・プロセスのスレッドの間,プロセスと AST の間,またはグローバル・セクション内の複数のプロセスの間で使用されることがあります。データ・アラインメントの詳細については,
第 4.8.7 項 および『OpenVMS Programming Concepts Manual』を参照してください。
|
- ターミナル・ドライバを参照する, (通常の) 呼び出しインタフェースを使用しないコード。
たとえば,JSB (jump to subroutine) マクロを使用しているコードは,呼び出しインタフェースを使用するように変更する必要があります。
- スレッドを実現するためにユーザが書いたコード。
たとえば,ダイレクト・スタック・スイッチングを実行するコード,コルーチンやタスキング・モデルをインプリメントするコード,プロシージャ呼び出しスタック・フレームの性質に依存するコードなど。詳細については,
第 4.8.6 項 を参照。
- 標準に準拠しなかったり,ドキュメントに記載されていないコーディング手法やインタフェースを使用しているコード。
さらに,ソース・コードのうち OpenVMS I64 ではコンパイラが提供されない言語で書かれたものは,書き直すか,変換する必要があります (サポートされるコンパイラの一覧については,
第 6 章 を参照)。 OpenVMS Alpha の特定の言語機能は, OpenVMS I64 ではサポートされませんので注意してください。詳細については,『HP OpenVMS Version 8.2 リリース・ノート [翻訳版]』を参照してください。また,特権モードで実行されるアプリケーションも変更が必要になることがあります。
ポーティングの前にソース・モジュールで必要な変更の詳細については, 第 4 章 を参照してください。
3.2.3 依存性の評価
次のステップでは,アプリケーションが依存しているソフトウェアおよび環境について評価します。
3.2.3.1 ソフトウェアへの依存性
ソフトウェアへの依存性を考慮する場合,次のコンポーネントが関係します。
- ランタイム・ライブラリ
- HP 製レイヤード・ソフトウェア
- 他社製ソフトウェア
- ツール
これらの要素の多くは,すでに HP OpenVMS I64 に移植されています。たとえば,次のものはすでに移植済みです。
- 以下のコンポーネントも含めて, OpenVMS オペレーティング・システムにバンドルされている HP 製ソフトウェア
- ランタイム・ライブラリ
- その他の共有ライブラリ,たとえば,ユーティリティ・ルーチンや,その他のアプリケーション・ライブラリ・ルーチンを提供するライブラリ
- 以下のコンポーネントを含む HP 製レイヤード・ソフトウェア
- コンパイラとコンパイラ・ランタイム・ライブラリ
- データベース・マネージャ
- ネットワーク環境
- 他社製品
現在,多くの他社製品が OpenVMS I64 で稼動しています。特定のアプリケーションが移行されているかどうかについては,アプリケーションを提供しているベンダにお問い合わせください。
重要
他社製のソフトウェアが提供されているかどうかが,ポーティング・プロジェクトの最大の障害になることがあります。ターゲット・オペレーティング・システム用の他社製ソフトウェアの有無とその価格を確認する必要があります。これには,ビルド環境ツール,サードパーティ・ライブラリ,自動テスト・ツールなどが含まれます。 OpenVMS で無料で提供されるツールについては,
第 5 章 を参照してください。
|
3.2.3.2 開発環境
アプリケーションが依存している開発環境について検討します。たとえば,オペレーティング・システムの構成,ハードウェア,開発ユーティリティ,ビルド・プロシージャ (CMS: Code Management System や MMS: Module Management System などの HP 製ツールを含む) などについて検討してください。
3.2.3.3 オペレーティング環境
オペレーティング環境に関して,次の問題点を検討します。
- システム属性
アプリケーションの実行と保守に必要とされるシステム。たとえば,必要なメモリ容量やディスク容量など。
- テスト・ツール
テストを行って,移植したアプリケーションが正常に動作することを確認し,パフォーマンスを評価する必要があります。新製品の開発,特に新しいシステムへのアプリケーションのポーティングの際には,リグレッション・テストがきわめて重要です。リグレッション・テストは,新しいバージョンのオペレーティング・システムおよびプラットフォームでソフトウェアをテストするのに役立ちます。リグレッション・テストは以下のいずれか 1 つ,またはその組み合わせによって構成できます。
- 考えられるすべてのコード・パスおよび機能を実行するために,開発チームが作成したソフトウェア・プログラム
- 一連の DCL コマンド・プロシージャ
- (ソフトウェアによる自動実行ではなく) 手動で実行する対話型テスト
- HP Digital Test Manager またはそれに相当するオープンソース・ツール
3.2.4 運用タスク
アプリケーションのポーティングと保守に必要な運用タスクの要件と責任を評価します。たとえば,次のタスクに関する検討が必要です。
- インストールの要件
- コンパイルの要件
- アプリケーションで使用したコンパイラは,本バージョンの OpenVMS I64 でもサポートされますか?
- アプリケーションのポーティングに先立って, OpenVMS Alpha システムで最新バージョンの OpenVMS Alpha コンパイラを使用してアプリケーションをコンパイルすることをお勧めします。この作業を行うことで,アプリケーションを OpenVMS I64 でコンパイルしたときに発生する可能性がある問題点を,あらかじめ検出できることがあります。新しいバージョンのコンパイラでは,既存のコンパイラ標準より厳密な解釈が適用されたり,新たに厳密な標準が適用されていることがあります。本バージョンの OpenVMS I64 でサポートされるコンパイラの詳細については, 第 6 章 を参照してください。
- OpenVMS Alpha システムでコンパイルのテストを行い,問題を解決した後,アプリケーションを OpenVMS I64 システムに移植し,再度コンパイル,リンク,および確認作業を行う必要があります。これらの作業に関するプランを作成します。
- VAX 浮動小数点データ・タイプを IEEE 浮動小数点データ・タイプに変更することができますか?
一般に,OpenVMS I64 でも,アプリケーションで VAX 浮動小数点データ・タイプを使用できます。以前に生成されたバイナリ浮動小数点データにアクセスすることが必要な場合は, VAX 浮動小数点形式を使用します。 OpenVMS I64 システムでは,VAX 浮動小数点形式はソフトウェアでインプリメントされます。 HP 製コンパイラは,VAX 浮動小数点形式の値を IEEE 浮動小数点形式に変換して算術演算を実行するのに必要なコードを自動的に生成します。しかし,その後,値を VAX 浮動小数点形式に戻します。この追加変換のために,アプリケーションの実行時にオーバヘッドが発生します。この理由から,できるだけアプリケーションを IEEE 浮動小数点形式に変更することを検討してください。
Alpha ハードウェアでは IEEE 浮動小数点がサポートされるため,OpenVMS Alpha で動作するアプリケーションは,パフォーマンスを犠牲にせずに, IEEE 浮動小数点形式を使用するように変更できます。このような変更をあらかじめ行っておくと, OpenVMS I64 へのアプリケーションの移行が容易になります。 IEEE 浮動小数点形式は,Itanium ハードウェアでサポートされる唯一の浮動小数点形式です。さらに,この形式を使用することで,アプリケーションのパフォーマンスも向上します。
OpenVMS Alpha システムで IEEE 修飾子を指定してアプリケーションをコンパイルすると, IEEE 浮動小数点形式の値を使用してアプリケーションの動作をテストできます (多くのコンパイラでは,コンパイラ・オプション /FLOAT=IEEE を指定します。 I64 BASIC を使用している場合は,/REAL_SIZE 修飾子を指定します)。その結果,望ましい結果が得られた場合は,同じ修飾子を使用して OpenVMS I64 システムで (さらに必要であれば Alpha でも) アプリケーションを単純にビルドすることができます。
詳細については, 第 4.8.4 項 およびホワイトペーパー『Intel® Itanium® における OpenVMS 浮動小数点演算について』を参照してください。このホワイトペーパーが入手できる Web サイトについては,「まえがき」の「関連資料」の項を参照してください。
- バックアップおよび復元機能
- オペレータ・インタフェースの見た目と使い勝手
- システム管理
3.3 HP から提供されるポーティング・リソース
どのような組織でも,ポーティング・プロセスのあらゆる段階に習熟しているわけではありません。そのため,HP はポーティング・プロセス全体にわたってお客様を支援するためのリソースを用意しています。これらのリソースには,ポーティング・ガイドから,ポーティングの全作業に対処するためのツールを用意したスタッフ・チームに至るまで,あらゆるものを提供できます。詳細については,HP の担当者にお問い合わせいただくか,以下のアドレスの Alpha Retain Trust サービスの Web サイトをご覧ください。
http://www.hp.com/products1/evolution/alpha_retaintrust/services.html
|
提供されるその他のリソースの例については,以下のサイトをご覧ください。
- Developer and Solution Partner Program (DSPP)
http://www.hp.com/go/dspp
|
- Test Drive Program
http://www.testdrive.hp.com/
|
- HP Services
http://www.hp.com/go/services/
|
Itanium アーキテクチャに関する HP の戦略が引き続き展開されていく間,セールス部門およびグローバル・サービス部門は,HP のお客様および ISV 各位の長期プランに与える影響を引き続き調査していきます。各ユーザに共通する一般的な状況および個々のお客様固有の状況を解決するために,数多くの定型サービスおよびカスタマイズ・サービスが用意され,ドキュメント化される予定です。 HP は,アーキテクチャの過渡期に発生する重大な変更に対応するのに必要なツールとリソースを提供することで,お客様のニーズに最適なサービス製品を提供しています。
3.4 その他の検討事項
すべてのレイヤード・ソフトウェアおよびミドルウェア製品が,早期に OpenVMS I64 へ移植されるわけではありません。 HP はソフトウェア・ベンダを支援するために,ポーティング・プロセスに役立つ情報,ハードウェア,サポート,およびツールを提供しています。各ソフトウェア・ベンダは,ソフトウェアの開発に必要なコンポーネントが開発スケジュールに間に合うように提供されるかどうかについて,各コンポーネントを提供する企業のポーティング・プロセスの進捗状況を確認してください。
HP は現在,コード・ベース,コマンド,およびプロセスに関して,大部分の開発者が新しい OpenVMS I64 プラットフォームへのポーティングを特に意識せずに透過的に行うことができるツール群を,既存の OpenVMS Alpha プラットフォームに実装することを計画しています。このツール群は,高品質な製品のリリースに伴うテストに代わるものではなく,製品のポーティングに必要となる時間を削減することを目的にしています。