B
ecause Digital’s Alpha architecture
provides the world’s fastest proces-
sors, many applications, especially
those requiring high processor performance,
have been ported to it. However, many other
applications are available only under the x86
architecture. We designed Digital FX!32 to
make the complete set of applications, both
native and x86, available to Alpha. The goal
for the software is to provide fast and trans-
parent execution of x86 Win32 applications
on Alpha systems. FX!32 achieves its goal by
transparently running those applications at
speeds comparable to high-performance x86
platforms. Digital FX!32 is a software utility
that enables x86 Win32 applications to be run
on Windows NT/Alpha platforms. Once
FX!32 has been installed, almost all x86 appli-
cations can be run on Alpha without special
commands and with excellent performance.
Before the introduction of this software,
two common techniques for running an
application on a different architecture than
the one for which it was originally compiled
were emulation and binary translation. Each
technique has an advantage, but also a
drawback. Emulation is transparent and
robust, but delivers only modest perfor-
mance. Binary translation
1
is fast, but not
transparent. For the first time, Digital FX!32
combines these technologies to provide
both fast and transparent execution.
This software consists of three interoper-
ating components. There is a runtime envi-
ronment providing transparent execution, a
binary translator (the background optimiz-
er) providing high performance, and a serv-
er coordinating them. Although FX!32 is
transparent and does not require user inter-
vention, it includes a graphical interface for
monitoring status and managing system
resources.
The first time an x86 application runs, all of
the application is emulated. Together with
transparently running the application, the
emulator generates an execution profile
describing the application’s execution histo-
ry. The profile shows which parts of the appli-
cation are heavily used (for each user) and
which parts are unimportant or rarely used.
While the first run may be slow, it “primes the
pump” for additional processing. Later, after
the application exits, the profile data directs
the background optimizer to generate native
Alpha code to replace all the frequently exe-
cuted procedures. The next time the applica-
tion runs, native Alpha code is used and the
application executes much faster. This process
repeats whenever a sufficiently enlarged pro-
file shows that it is warranted.
Three significant innovations of Digital
FX!32 include transparent operation, inter-
face to native APIs, and, most importantly,
profile-directed binary translation.
Transparent operation
When we say FX!32 is transparent, we
mean two things: applications execute in the
expected way (without any special com-
mands), and interoperability with native
applications works normally.
Launching x86 applications. Transpar-
ent launching of Win32 x86 applications
comes from a dynamically linked library
(DLL), the transparency agent. Launching an
application on Windows NT always results
in a call to the CreateProcess function. By
intercepting calls to CreateProcess, the trans-
parency agent can examine every image as
it is about to be executed. If a call to Cre-
ateProcess specifies an x86 image, the trans-
parency agent instead invokes the FX!32
runtime to execute the image. Although spe-
cial privileges are required to install FX!32,
once installed, the transparency agent, and
therefore the applications themselves, run
without special privileges.
Digital FX!32 inserts the transparency
56 IEEE M icro 0272-1732/98/$10.00 © 1998 IEEE
A new innovation
from Digital allows
most x86 Windows
applications to run on
Alpha platforms with
good performance.
FX!32
A Profile-Directed Binary Translator
Anton Chernoff
M ark Herdeg
Ray Hookway
Chris Reeve
Norman Rubin
Tony Tye
S. Bharadwaj Yadavalli
Digital Equipment
Corporation
John Yates
Chromatic Research
.