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, andbased 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.