Coexistence and Upgrades: OpenVMS VAX, OpenVMS Alpha, and OpenVMS Itanium™  Platforms
CETS2001 session 1152
Stephen Hoffman
OpenVMS Engineering
Audience
This is a technical session
•	Target Audience:
–	Involved in Platform Upgrades, Coexistence
•	Some OpenVMS Familiarity is Assumed:
–	User Commands
–	System Management Commands
–	Programming Commands

Goals?
What are your goals?
•	Application Requirements?
–	Increased Performance Needed?
–	Increased Scale Needed?
•	Cost Savings?
–	Reduced Support
–	Reduced Floor Space
•	Other Considerations?

Table of Contents
Topics Covered
•	Hardware
•	Layered Products
•	Applications
•	Upgrades and Coexistence
•	Questions & Answers

Hardware
Upgrades, Systems and Storage
Hardware
Various hardware can upgrade
•	Consider what you are upgrading, and why:
–	What alternatives exist? 
–	How will you connect it?
–	What are the implications?
–	What are the costs?  Savings?
Hardware
New systems can have new requirements
•	Physical Storage
–	Archiving
–	RAID
•	Physical Memory
–	Increased Caching
–	Increased System Load
–	Increased Architectural Requirements

Hardware
Consolidation vs. Replacement
•	Considerations:
–	Redundancy vs. Consolidation
–	Rack-mount vs. Standalone
•	Configuration Options
–	OpenVMS Cluster
–	OpenVMS Galaxy
–	Standalone Network

Hardware
I/O Technology Convergence
•	SAN and NAS
–	Storage on Network Technologies
–	Network on Storage Technologies
Hardware
I/O Technology Convergence
•	Compaq StorageWorks, I/O Technologies
–	Fibre Channel
–	UltraSCSI
–	ATAPI
–	USB
–	PCI-X
–	Others
Layered Products
Availabilities and Alternatives
Layered Products
What products, what versions?
•	Research Project
–	Product Availability
–	Product Compatibility
–	Product Migration
•	Use Compatible Product Versions
–	Cluster
–	Architecture vs. Other Differences
Applications
Construction and Verification
Applications
Compatibility is the Rule, Not the Exception
•	Compatibilities:
–	System Services
–	Languages and Tools
–	File System
•	Architectural
–	PALcode provides strong VAX flavor to Alpha
–	"Abstraction Layer" provides flavor to Itanium™
–	Similar data types, addressing, processor modes

Applications
Compatibility is the Rule, Not the Exception
•	Mixed-Architecture Cluster Configurations
–	Mixed VAX and Alpha clusters are supported
–	Alpha and Itanium™ clusters to be supported
–	Triple-architecture clusters might work
–	Testing and support requirements to be determined based on customer input and customer requirements, and (then) on the testing results
Applications
Compatibility is the Rule, Not the Exception
•	The SYS$COMMON Rule of Thumb
•	System databases are fully shareable
–	SYSUAF
–	RIGHTSLIST
–	VMS$OBJECTS
–	QMAN$MASTER
–	Etc
Applications
Compatibility is the Rule, Not the Exception
•	The Compilers
–	Far better at finding latent source code errors
–	Common VAX-specific routines emulated
•	LIB$MOVC5, LIB$BBCCI, LIB$INSQHI, etc 
–	Best to use compatible versions
•	Compilers
•	OpenVMS

Applications
Compatibility is the Rule, Not the Exception
•	The Data
–	Core data formats are identical 
–	Data conversion routines are available
•	VAX and Alpha prefer natural alignment
–	VAX compilers default to byte alignment
–	Alpha compilers default to natural alignment
–	Itanium™ compilers under development
Applications
Incompatibilities, Differences
•	Instruction Set
–	VAX Macro32 Compiler vs. Assembler
•	Architectural
–	PALcode vs. Microcode
–	Shared Memory
•	Memory Caching, Memory Barriers
–	Calling Standard
•	Argument Passing, Call Stack
–	Data Alignment

Applications
Incompatibilities, Differences
•	Data Formats Typically Portable Except:
–	VAX H_Floating
–	Packed Decimal
–	Conversion calls available
•	VAX Features Available
–	Modes, probes, ASTs, IPLs, "REI"
–	VAX-style Page Tables, Memory Management

Applications
Incompatibilities, Differences
•	PAL vs. PALcode vs. Microcode

Applications
Incompatibilities, Differences
•	Memory Page Size
–	VAX: Fixed Page Size 
•	0.5KB (512 bytes)
–	Alpha: Implementation-specific
•	8KB to 64KB (8192 to 65536 bytes)
–	Itanium™: Implementation-specific
•	8KB (to start; larger page sizes later?)

Applications
Incompatibilities, Differences
•	Memory Caching
–	Memory Barriers

Applications
Incompatibilities, Differences
•	Calling Standard
–	Argument Passing
–	Call Stack
–	Argument Homing
–	Exception Handling
•	Precise vs. Imprecise

Applications
Incompatibilities, Differences
•	Natural alignment best choice for performance
–	VAX compilers default to byte alignment
–	Alpha compilers default to natural alignment
–	Itanium™ compilers under development

Applications
Incompatibilities, Differences
•	MTH$ Library vs. MATH$ Library
–	Call vs. JSB
Applications
Incompatibilities, Differences
•	Signal Handling Differences
–	LIB$ESTABLISH and LIB$REVERT
–	LIB$MATCH_COND
•	Signal Array (32-bit format) is Compatible
•	Mechanism Array Extended
•	Use CHFDEF symbol definitions

Applications
Incompatibilities, Differences
•	Fault Handling:
–	LIB$FIXUP_FLT
–	LIB$FLT_UNDER, _OVER
–	LIB$DECODE_FAULT
–	LIB$DEC_OVER
•	LIB$TPARSE
–	Replaced by LIB$TABLE_PARSE
Applications
Incompatibilities, Differences
•	Macro32 Compiler vs. Macro32 Assembler
–	Do you even need the Macro32 code?
•	Performance?
•	Alternative Routines?
Applications
Incompatibilities, Differences
•	Macro32 Compiler vs. Macro32 Assembler
–	Instruction Sequencing
–	Instruction Relocation
–	Instruction Lockdown
Applications
Incompatibilities, Differences
•	Macro32 Compiler vs. Macro32 Assembler
–	Code and Call Frame Data
–	Manually-generated entry points (CALL, JSB)
–	Coroutines, 
–	AP and R12, Homing
–	4(AP),8(AP),… and Alpha R16-R21
Applications
Incompatibilities, Differences
•	LINKER
–	SYS.STB vs. SYS$BASE_IMAGE
–	LINK/SYSEXE

Applications
Incompatibilities, Differences
•	LINKER and Shareable Images
–	Transfer Vector vs. Linker Directive
Migration and Coexistence
You can get there from here…
Migration and Coexistence
Using VAX, Alpha, Itanium™, or a Combination?
•	Requirements for Coexistence?
–	Long-Term
–	Short-Term
–	None: “Big Bang” Transition
Migration and Coexistence
General Recommendations 
•	Review Application Requirements
•	Perform a Phased Migration
•	Use Compatible Product Versions
•	Source Code Control
•	Track Testing Plans
•	Mixed-Version OpenVMS Cluster

Migration and Coexistence
Useful Tools and Techniques
•	Lexical functions
–	F$GETSYI ARCH_TYPE, ARCH_NAME
–	F$GETSYI PAGE_SIZE
•	Logical Names
•	Parallel Directories
•	Clustering
Where to go for help?
http://www.openvms.compaq.com/
FAQ, Roadmap, Ask The Wizard, Documentation, Books
http://www.compaq.com/alphaserver/
http://www.compaq.com/csa/
OpenVMS Coexistence and Migration
CETS2001 session 1152
The Fine Print
Copyright 2001 Compaq Computer Corporation All rights reserved.
While Compaq  believes the information included in this presentation is correct as of the date produced, it is subject to change without notice.
All trademarks and registered trademarks are the property of their respective holders.  Itanium™ and IA-64™ are trademarks of Intel.
Presentation void where taxed or prohibited by law.
Recommended for technical and engineering ranks ages 12 and up.  Ask for special pointy-haired-boss toy.
Known Glaze-on hazard, please keep this and all other similar presentations away from known-sensitive members of engineering, marketing and management.