My appreciation of Alpha machines is not a big secret around these parts. I've been an Alpha fan since the first time I laid my hands on Digital Equipment's 150MHz variety, back when the fastest Intel was a Pentium 60, complete with floating point bug. The Digital Alpha is among the world's fastest processors, but this RISC-based processor can't natively run all forms of Intel-based programs. To address this issue, Digital came up with FX!32, a translation tool that is incredibly cool. It converts Intel Win32 code into native Alpha instructions, creating Alpha compatibility for most 32-bit Intel-based Windows NT applications. Joel Sloss explained a prototype of FX!32 in his October 1996 article, "FX!32." I'll describe how version 1.1 has developed.

FX!32 1.1 is a software-based x86 (Intel-based) Win32 (32-bit) binary translator. It lets users run most native Intel x86 code on their Alpha systems. Independent benchmark testing results show that some Alpha systems using FX!32 either match or beat the performance of the same applications running on 200MHz Pentium Pro systems.

FX!32 works by translating the Intel execuTables, called images, into an Alpha code image. When you run a Win32 application that was compiled for an x86 system, FX!32 immediately recognizes that the application is not native to the Alpha. FX!32 then either converts the Intel code into Alpha code on the fly or (if you've run this application before) runs a previously translated program image from disk.

As you run the application, FX!32 collects information, such as each called program routine, static jump points to other routines, and the number of times the application calls the routines. FX!32 saves this information as a series of files called profiles. Profiles are a list of program routines encountered during the execution of the program. Each time you run the application, FX!32 collects profile information, merges the new information with existing profile information, and­based on the threshold settings of the Configuration Manager­ decides when to reoptimize the code. After each optimization, the application will run faster as FX!32 translates more of the application into native Alpha format. According to Digital, the greatest performance improvement usually occurs after the first or second time you run the application.

Keep in mind that FX!32 optimizes only the code that you've executed. If you never use certain functions of a program (e.g., the Table insertion tool in Microsoft Word), FX!32 won't optimize those routines until it collects information about them. Information collection occurs when you start the routines through a menu command, tool button, or hot-key combination.

FX!32 consists of the following main parts:

  • The installer program, which installs Intel-based applications.
  • The FX!32 Server service, which lets the software optimize and execute the Intel-based code and perform other general housekeeping tasks, such as merging profile information and deciding when to optimize the code again.
  • A runtime environment, which transparently runs the application and collects information about what Intel program routines FX!32 encounters. This information will become the execution profile for the application.
  • The Background Optimizer, which uses the profiles to create the optimized code in a way similar to the operation of program compiler.
  • The FX!32 Server, which coordinates the runtime environment with the optimizer and decides whether to further optimize the code (if it hasn't already been fully optimized).
  • The Configuration Manager, which sets optimization schedules and lets the user define maximum disk usage parameters for profiles. FX!32 creates profiles as the application executes, and it stores the profiles on disk. Users might not be aware that FX!32 is using increasing amounts of disk space with each optimization, so the Configuration Manager lets users control the maximum amount of space that FX!32 can use.

Easy Installation
Now that you know what FX!32 is and how it works, let's look at installing the software. Installation is easy: Just pick the installation directories and choose a Start Menu folder name for the FX!32 software. The installation program then copies all the necessary FX!32 files and creates a menu entry on the Start Menu for easy execution.

To run Intel-based applications through FX!32, you install them on the Alpha through the FX!32 Installer. First, you run the FX!32 Installer and tell the Installer where to find the Win32 application's setup program. The Installer then launches the setup program, which installs your application. Software manufacturers distribute Windows-based applications with one of four types of installation program: full 32-bit, 16-bit to 32-bit, 16-bit to i286 (does anyone still use 286 software?), and 16-bit enhanced mode (i386, i486, etc). The FX!32 Installer supports all four types of Windows installation programs under Windows NT 4.0, but only three--all except the 16-bit enhanced mode installation programs--under Windows 3.51.

FX!32 launches the application immediately after installation. You can use the application immediately after you install it, or close it down for later use. By default, FX!32 begins to generate optimized Alpha code as soon as you finish using the application and close it. However, you might want to schedule optimization to run later, for example, when the extra overhead of the optimization process is least likely to burden your system.

Program Optimization
As Screen 1 shows, you use the Configuration Manager to schedule the optimization. From the Options menu, choose Scheduler. This action presents the dialog box shown in Screen 2. As you can see from the options, scheduling is flexible. You can schedule optimizations at different times on different days.

Screen 1 shows the Configuration Manager in action as FX!32 is optimizing a copy of Paint Shop Pro. The top pane displays FX!32 and the application; the bottom pane displays a list of all execuTable modules associated with the selected application. The Optimizer Status column shows that FX!32 has optimized the files marked Success, hasn't yet optimized the .FLT files marked Never attempted, and is in the process of optimizing MSVCRT.DLL, which has an optimization status of 80 percent complete with 9 seconds remaining.

In addition to optimizing the program for Alpha use, the Configuration Manager lets you view (for your general information) the profiles that FX!32 has established for any Intel-based code you've installed; you can also establish disk space usage restrictions for those profiles. FX!32 can erase profiles from seldom-used programs, saving precious disk space.

Digital has designed FX!32 incredibly well. Users have only to install and optimize Intel-based applications; from that point on, FX!32 operates transparently to the user.

FX!32 1.1 offers several improvements over the previous version. The most dramatic improvement is more efficient memory utilization in the FX!32 optimizer. Other enhancements include the ability to mail documents from your Messaging API (MAPI)-enabled applications; deferred scheduling of optimizations; significant improvement in the startup times for FX!32-enabled applications; several enhancements in the runtime, including DirectSound support and improvements to FX!32 Server and to the Exchange extensions; and facilitation of most applications that require specific virtual memory addresses.

A Few Limitations
Before you think you've just found your pot of gold, let me point out a few of FX!32's limitations. The software supports only Win32 x86 applications that run under NT, which includes most 32-bit Windows 95 applications. Although the software runs on NT 3.51, Digital doesn't support this platform; so if you use FX!32 under NT 3.51, you're on your own. FX!32 does not support the use of Intel-based services (such as a third-party tape backup service), Screen savers, debuggers, or device drivers. You can't install Microsoft's Wx86 emulator on the same system with FX!32.

FX!32 supports only those NT APIs that Microsoft supports under NT for Alpha. Although FX!32 1.1 supports Object Linking and Embedding (OLE) and ActiveX is a superset of OLE, Microsoft and Digital don't yet support ActiveX for the Alpha, nor is ActiveX completely functional on the platform.

You'll want to be aware of several other limitations, restrictions, and informational tidbits before diving off the deep end with this software, so be sure to examine the README.TXT file included with the distribution. The file outlines everything you need to know before you get started.

FX!32 is available for NT 4.0 directly from Digital's FX!32 Web site at http://www.digital.com/info/semiconductor/amt/fx32. The program comes in several pieces for easy downloading, or if you prefer, you can download one large 8.8MB file. If you want the software on CD-ROM, you can order it directly from Digital. Ordering instructions are on the company's Web site.

Digital has produced a really nice tool in FX!32. And in a sea of native Intel-based applications, FX!32 has eliminated a tremendous amount of my frustration related to cross-platform compatibility. I'm certain it will do the same for you.