Key Factors to Consider When Porting to Itanium-based Systems
Moving a program from an early-90s Cray mainframe to an Itanium 2-based system will be harder than moving a program from the Intel Xeon 64-bit processor to an Itanium 2-based system. Luckily, Intel, HP and other vendors offer access programs that give members access to the latest Itanium 2-based hardware, often before it comes out on the market. In addition to the ability to lease systems at a discount the Intel Early Access Program offers support for training, testing, optimization, and other elements of porting to the Intel Itanium microarchitecture. The Intel Remote Access program lets developers use Itanium-based systems remotely:
Consider the larger ecosystem as well. Will your shiny new Itanium 2-based application have to communicate with other systems? Is there mixing of 32- and 64-bit systems? Are there potential security issues? What level of users will be interacting with the application? Where are data stored, and how are they accessed? These can all be factors in deciding how to port.
Operating Systems
One of the biggest advantages in using servers based on commodity processors like the Intel Itanium 2 microarchitecture is that they can run a variety of operating systems. In fact, because of their virtualization capabilities and processing power, Itanium 2-based systems can often run different operating systems simultaneously. Whether your software is made for OpenVMS, Windows, HP-UX 11, or any of multiple versions of Linux, you can get it onto an Itanium 2-based server or cluster without having to recompile for both a new OS and a new processor. Operating system migrations often far outstrip the complexity of the move between processor types and must be dealt with on their own terms before the hardware migration even begins.
Code and Languages
Ideally, you have the complete source code in your hands. Due to differences in pointers and data sizes, you'll still have some work to do to get your code ready for the migration. But with a highly-optimizing Intel Itanium 2 compiler, you stand a much greater chance of getting the most out of the EPIC architecture and other advanced processor features if you have the source code, as well as a full set of post-compile testing and optimization tools from which to choose.
Applications that rely on runtime environments (RTE) such as Java, .NET, or shell programming languages like Python and Perl are the easiest to migrate. Of course, this assumes that the appropriate RTE is available for the Intel Itanium 2 microarchitecture; most are. Native libraries, external components and database drivers that are crucial to the functioning of a managed application still may need to be ported or replaced with compatible equivalents.
If you don't have the source code, you could face the onerous task of rebuilding from the bottom up. Even though the software in question might be outdated and stand to benefit from such an initiative, a complete rewrite could be too expensive or time-consuming. For such situations, Intel has provided the IA-32 Emulation Layer (IA-32 EL), a software-based solution for running 32-bit programs on Itanium 2-based systems. While it can't match the performance of natively compiled code, it beats starting from scratch.
Assembly language is not much easier to port to Intel Itanium 2 processors. Assembly for the Intel Itanium 2 microprocessor is radically different than that for other processors and it can be difficult to take advantage of processor features when coding at an assembly level, so much so that Intel's documentation recommends against coding in assembly.