Compaq OpenVMS Alpha
V7.3-1 リリース・ノート【翻訳版】


前へ 次へ 目次 索引


7.4 コーディングの必要条件

『Alpha Architecture Reference Manual』では,プロセッサ間のデータの不可分な更新を実行する方法を説明しています。特に『Third Edition』には,この問題に関するさらに詳しい情報が含まれています。また,インターロックされたメモリ・シーケンスの規則について詳しく説明されています。

次の 2 つの必要条件が満たされない場合は,規則に準拠しないコードが生成されます。

したがって,SRM_CHECK ツールは次の条件を検索します。

次の例に,SRM_CHECK でフラグが付けられたコードを示します。


        ** Found an unexpected ldq at 0008291C 
        00082914   AC300000     ldq_l          R1,(R16)
        00082918   2284FFEC     lda            R20, 0xFFEC(R4)        
        0008291C   A6A20038     ldq            R21, 0x38(R2)

この例では,LDQ 命令が LDQ_L の後,STQ_C の前に検出されています。LDQ は,再コンパイルまたはソース・コードの変更によって,このシーケンスの外部に移動しなければなりません(第 7.3 節 を参照してください)。


        ** Backward branch from 000405B0 to a STx_C sequence at 0004059C        
        00040598   C3E00003     br             R31, 000405A8 
        0004059C   47F20400     bis            R31, R18, R0 
        000405A0   B8100000     stl_c          R0,(R16)
        000405A4   F4000003     bne            R0, 000405B4 
        000405A8   A8300000     ldl_l          R1,(R16)
        000405AC   40310DA0     cmple          R1, R17, R0 
        000405B0   F41FFFFA     bne            R0, 0004059C 

この例では,LDL_L と STQ_C の間から分岐が検出されています。この場合,LDx_L と STx_C の間に,アーキテクチャで要求されている「フォール・スルー」パスがありません。

注意

LDx_L から STx_C へのこの逆向きの分岐は,「ループ・ローテーション」最適化によって発生する,規則に準拠しないコードの特徴です。

次の MACRO--32 ソース・コードは「フォール・スルー」パスがあるものの,ロック・シーケンス内に可能性のある分岐とメモリ参照があるために,規則に準拠しないコードを示しています。


        getlck: evax_ldql  r0, lockdata(r8) ; Get the lock data 
                movl       index, r2         ; and the current index. 
                tstl       r0                ; If the lock is zero, 
                beql       is_clear          ; skip ahead to store. 
                movl       r3, r2            ; Else, set special index.        
        is_clear: 
                incl       r0                ; Increment lock count 
                evax_stqc  r0, lockdata(r8) ; and store it. 
                tstl       r0                ; Did store succeed? 
                beql       getlck            ; Retry if not. 
 

このコードを修正するには,INDEX の値を読み込むためのメモリ・アクセスを最初に LDQ_L/STQ_C シーケンスの外部に移動しなければなりません。次に,ラベル IS_CLEAR への,LDQ_L と STQ_C の間の分岐を取り除かなければなりません。この場合,CMOVEQ 命令を使用して分岐を取り除くことができます。CMOVxx 命令はしばしば,単純な値の移動の周囲にある分岐を取り除くために役立っています。次の例に,修正されたコードを示します。


                movl       index, r2         ; Get the current index 
        getlck: evax_ldql  r0, lockdata(r8) ; and then the lock data. 
                evax_cmoveq r0, r3, r2       ; If zero, use special index.        
                incl       r0                ; Increment lock count 
                evax_stqc  r0, lockdata(r8) ; and store it. 
                tstl       r0                ; Did write succeed? 
                beql       getlck            ; Retry if not. 
 

7.5 コンパイラのバージョン

表 7-1 は,規則に準拠しないコード・シーケンスを生成する可能性のあるコンパイラのバージョンと,再コンパイルするときに使用する推奨最小バージョンについて説明します。

表 7-1 OpenVMS コンパイラのバージョン
旧いバージョン 推奨最小バージョン
BLISS V1.1 BLISS V1.3
DEC Ada V3.5 Compaq Ada V3.5A
DEC C V5.x DEC C V6.0
DEC C++ V5.x DEC C++ V6.0
DEC COBOL V2.4,V2.5 Compaq COBOL V2.6
DEC Pascal V5.0-2 DEC Pascal V5.1-11
MACRO--32 V3.0 OpenVMS Version 7.1-2 については V3.1
OpenVMS Version 7.2 については V4.1
MACRO--64 V1.2 下記参照

MACRO--64 アセンブラの現在のバージョンでも,ループ回転の問題が発生することがあります。しかし,MACRO--64 ではデフォルトでコードの最適化が実行されないので,この問題が発生するのは,最適化が有効に設定されている場合だけです。SRM_CHECK が MACRO--64 コードから規則に準拠しないシーケンスを検出した場合は,最初に最適化せずに再コンパイルする必要があります。その後,再びテストしてもシーケンスにフラグが付けられる場合は,ソース・コード自体に修正の必要な非準拠シーケンスが含まれています。

7.6 ALONONPAGED_INLINE または LAL_REMOVE_FIRST によるコードの再コンパイル

OpenVMS Alpha の MACRO--32 コードのうち,SYS$LIBRARY:LIB.MLB マクロ・ライブラリから ALONONPAGED_INLINE マクロまたは LAL_REMOVE_FIRST マクロを起動するコードは,OpenVMS Version 7.2 またはそれ以降で再コンパイルして,これらのマクロの正しいバージョンが取得されるようにしなければなりません。これらのマクロを変更すると,新しい Alpha 21264(EV6)以上のプロセッサで検出される可能性のある,同期化に関する問題を修正できます。

注意

EXE$ALONONPAGED ルーチン(またはその変形)を呼び出すソース・モジュールは, 再コンパイルする必要がありません。これらのモジュールは,ユーザに意識させることなく,このリリースに含まれているルーチンの正しいバージョンを使用します。


付録 A
リタイア製品情報

この付録では,すでにサポートが中止された OpenVMS 製品およびサポートの中止が予定されている OpenVMS 製品についてお知らせします。また,アーカイブされたマニュアルを検索する方法についても説明します。

フリーウェア

製品のサポートが中止されると,Compaq はそれらの製品に対する問題に関する報告を受け付けず,またそのような報告への対処も行いません。しかし,独自の開発やサポートを目的に,以前の製品のソース・コードを必要とされるお客様に対しては,多くの製品のソース・コードを次の形態でフリーウェアとして提供しています。

A.1 Netscape FastTrack 3.02 のサポートの中止

V7.3-1

Netscape FastTrack 3.02 は,2001 年 12 月 31 日をもって廃止されました。代替製品 Compaq Secure Web Server(CSWS,Apache ベース)は,OpenVMS の次の Web サイトからダウンロードできます。


    http://www.openvms.compaq.com/openvms/products/ips/apache/csws.html    

また,CSWS の日本語サポート状況などの情報は,次のサイトに掲載しています。


    http://openvms.compaq.co.jp/products/internet/csws.html    

また,OpenVMS Alpha Version 7.3-1 またはそれ以降のメディア・キットにバンドルされた OpenVMS e-Business Infrastructure Package CD-ROM でも入手可能です。

A.2 POSIX 1003.4a Draft 4 インタフェースのサポートの中止

V7.0

Compaq POSIX Threads Library(以前の DECthreads)の POSIX 1003.4a, Draft 4("d4")インタフェースは,将来のリリースでサポートされなくなる予定です。POSIX 1003.4a, Draft 4 インタフェースを使用して作成されたアプリケーションは,POSIX スレッド・ライブラリで提供される新しい POSIX 1003.1c 標準("pthread")インタフェースに移行する必要があります。このリリースでは,移行を支援するために,Draft 4 POSIX 1003.4a インタフェース用の互換性モードが提供されます。この互換性モードは将来のリリースでは削除されます。

A.3 ISA_CONFIG.DAT のサポートの将来のリリースでの中止

V7.1

SYS$MANAGER:ISA_CONFIG.DAT ファイルを使用して ISA デバイスを構成する機能は,OpenVMS Alpha の将来のリリースではサポートされなくなります。このファイルを使用している場合は,コンソールから ISACFG ユーティリティと,デバイス・ドライバをロードするための新しいファイル・ベースの自動構成方式を使用するように変換しなければなりません(『Writing OpenVMS Alpha Device Drivers in C』を参照)。

A.4 PATHWORKS for OpenVMS(NetWare)

PATHWORKS for OpenVMS(NetWare)は,1998 年 7 月にサポートが中止されました。この製品は現在も PATHWORKS for OpenVMS Version 6.0A に添付されていますが,PATHWORKS for OpenVMS Version6.0B またはそれ以降や OpenVMS Version 7.2 またはそれ以降では提供されません。

A.5 アーカイブされたマニュアル

V7.3-1

製品の製造が中止され,オペレーティング・システムが進化するにつれて,OpenVMS マニュアルの一部はアーカイブされます。アーカイブされたマニュアルはそれ以降保守されず,OpenVMS ドキュメンテーション・セットには含まれませんが,OpenVMS ドキュメンテーション CD-ROM および Compaq の Web サイトに保管されています。


    http://www.compaq.com/openvms    

A.5.1 Extended File Specifications: ドキュメントの再編成

以前,『OpenVMS Extended File Specifications の手引き』に記述されていた内容が他のマニュアルへ移り,このマニュアルは廃止されました。

次の表に,アーカイブされたマニュアルから新しいマニュアルへ移行されたトピックの,新しいマニュアルにおける位置を示します。

元のセクション 新しいマニュアル 移動先(章)
第 1 章「Extended File Specifications for OpenVMS の概要
すべて 『OpenVMS システム管理者マニュアル(上巻)』 第 9 章
第 2 章「OpenVMS システムでの拡張ファイル命名機能の管理
第 2.2.1 項「 RMS の省略時のExtended File Specifications 機能の使用 」を除くすべて 『OpenVMS システム管理者マニュアル(上巻)』 第 9 章と第 10 章
第 2.2.1 項「 RMS の省略時のExtended File Specifications 機能の使用 『Guide to OpenVMS File Applications』 第 6 章
第 3 章「拡張ファイル名の特徴
第 3.5 節「 DCL コマンドおよびユーティリティ 『OpenVMS ユーザーズ・マニュアル』 第 5 章
第 3.5 節「 DCL コマンドおよびユーティリティ」を除くすべて 『OpenVMS DCL ディクショナリ』 コマンドによるアルファベット順
第 4 章「OpenVMS アプリケーション開発での拡張ファイル名に関する注意点
すべて 『OpenVMS Programming Concepts Manual, Volume II』 第 29 章
付録 A「ユーザを対象としたExtended File Specifications の注意点
第 A.1 節「 Extended File Specifications の新しい特性 (ODS-5) 『OpenVMS I/O User's Reference Manual』 第 1 章
第 A.4 節「 制限事項 『Guide to OpenVMS File Applications』 第 5 章
第 A.1 節,第 A.4 節を除くすべて 『OpenVMS システム管理者マニュアル(上巻)』 第 10 章
付録 B 「技術情報
第 B.1 節「 システム・サービスの変更点 『OpenVMS System Services Reference Manual』 ルーチンによるアルファベット順
第 B.2 節「 レコード管理サービス(RMS)の変更点 『Guide to OpenVMS File Applications』 以下参照
第 B.2.1 項「 レコード管理サービスの変更点の概要 『Guide to OpenVMS File Applications』 第 5 章
第 B.2.2 項「 構文および意味の変更点」(第 B.2.2.7 項「 DID による短縮 」と第 B.2.2.8 項「 FID による短縮」を除く) 『Guide to OpenVMS File Applications』 第 5 章
第 B.2.2.7 項「 DID による短縮 『Guide to OpenVMS File Applications』 第 6 章
第 B.2.2.8 項「 FID による短縮 『Guide to OpenVMS File Applications』 第 6 章
第 B.2.3 項「 RMS のデータ構造の変更点(NAM ブロック) 『OpenVMS Record Management Services Reference Manual』 第 5 章
第 B.2.3 項「 RMS のデータ構造の変更点(NAML ブロック) 『OpenVMS Record Management Services Reference Manual』 第 6 章
第 B.3 節「 Files-11 XQP の変更点 『OpenVMS I/O User's Reference Manual』 第 1 章
第 B.4 節「 プログラミング・ユーティリティの変更点 『OpenVMS Utility Routines Manual』 第 10 章
第 B.5 節「 実行時ライブラリの変更点 『OpenVMS RTL Library(LIB$)Manual』 ルーチン別のアルファベット順
付録 C 「文字セット
すべて 『OpenVMS ユーザーズ・マニュアル』 付録 A


前へ 次へ 目次 索引