Emulation: Out of the Lab and onto the Desktop

Besides the Intel version of Windows NT, three other versions exist:
one each for the SGI/MIPS family of processors, the Apple/IBM/Motorola PowerPC
series, and the Digital Alpha series of chips. Until now, you had to rewrite
programs (or at least recompile them) for each of these platforms. In a world
utterly dominated by the Intel processor, this necessity has been a major
stumbling block to the acceptance of Intel alternatives.

Many computers can run software emulators; mainframes used them for decades
to run code for machines that no longer existed. But these solutions just turn a
particular 1401 instruction into equivalent 360 code, or disk calls from one
system into those for another. Developers speak theoretically about dynamic
recompilaton of code from one system for another, but the talk never amounts
to more than a few papers in academic periodicals and one or two lab
experiments.

Thus, when Digital Equipment announced a software emulator, FX!32, that can
transparently load and run 32-bit Intel programs on an Alpha system, NT users
showed great interest. For a chip that Intel neither designed nor inspired to
achieve significant market penetration, it must run a large body of code. An
emulator, or an automatic binary translator, is a major step along the path.

When Digital set a goal of an Intel application running at 70% of the
native application's speed, even more people noticed. Seventy percent of a fast
Alpha's native speed is faster than a Pentium, and in the past most emulators
ran two to three times slower than native. If FX!32 works as advertised, it is a
major achievement, both in software engineering and as a credible alternative to
Intel's hegemony. And with the price (FX!32 is freeware), even more people are
interested. In fact, Microsoft is releasing a 32-bit emulator for future
versions of non-Intel NT, according to rumors conveniently timed to either
improve FX!32's credibility or steal its thunder.

Spencer: We
spent about a year on the prototype and then about two years getting FX!32 to
external beta, and finally six months in beta. All told, it's been a bit over
three years since we began working on the x86-to-Alpha problem. At a Comdex
demonstration, an Alpha ran a set of applications (Office'95, CorelDraw, and
Photoshop) that were not available natively on Alpha.

Pournelle: I heard rumors of FX!32 running
on NT 3.51. Instead, you are releasing FX!32 with NT 4.0.

Spencer:We
considered 3.51 as a target, but then we realized that some applications rely on
the existence of the enhanced-mode 16-bit emulator, which wasn't available to
Alpha users until NT 4.0. Turns out, the applications are 32-bit, but the
installer on the kit can be 16-bit enhanced-mode! So those applications don't
install cleanly on Alpha without NT 4.0.

Pournelle:Just
how much work went into FX!32? How many people were on the development project
team? How many are committed to its ongoing maintenance and development?

Jollie: Six
engineers compose the core development team, and we added a few more in the
project's final months. But we are now putting into place the team for testing
and validating FX!32, marketing, product support, and distribution support.

Pournelle:How
many innovations does FX!32 contain? Are patents and papers due from it?

Spencer:FX!32's
execution paradigm, which is a unique combination of emulation and binary
translation, is one of the innovations. We have entered new territory in several
other areas, as well. We have filed nine patents and a technical paper is
underway.

Pournelle:Did
you need any additional hooks inside NT to make FX!32 work, or did they exist
already?

Spencer:Microsoft
didn't change NT to make FX!32 work. But we confronted several challenges, of
which Object Linking and Embedding (OLE) was prominent.

Jollie: What
Joyce is saying (probably more tactfully than I can) is that we made FX!32 work
without any help from Microsoft, so we did a huge amount of work to get into the
guts of NT and understand it. As we've proven the technology, Microsoft and
others have been more forthcoming with information. We hope this new cooperation
will lead to improvements in FX!32, but we've only just started with that work.

Pournelle:What
about horror stories of bad coding and bad software design in Windows
applications? Did poor code require defensive programming when you tried to run
every 32-bit Windows program on the market?

Spencer:This
issue hasn't really been as big as you might think. Once we provide support for
any x86 instruction that a 32-bit user program might use, most applications just
work. The installation of x86 applications onto the Alpha posed some problems.
We overcame a variety of situations to make installations behave as expected.

Jollie: I
don't think Joyce gives herself and the team enough credit. They have been
dealing with a standard that is still evolving. Calling the code in some
programs "poor" is fair in that it does not seem to follow the API;
however, it is "good" code in that it runs. We reverse engineered a
lot of applications and NT, and by doing so we've made everything we encountered
work. I'm not sure if anything required tricky programming on our part­more
like a keen understanding of the psyche behind a particular program!

Future Plans

Pournelle:Digital's
commitment to Alpha is laudable. To paraphrase a popular science fiction TV
show, Alpha is "the last, best hope" to compete with Intel chips. How
key a part of Digital's Alpha strategy is FX!32?

Spencer:FX!32
is a key element to a successful Alpha strategy. But, be clear, FX!32 is not the
cure-all. We still need more native ports, drivers, and performance. FX!32 is an
important foot in the door to help us get to the next phase.

Pournelle:With
the P7 (the follow-on to the Pentium Pro) pushed to at least 1998, Digital has a
rare breathing space in the race for CPU speed. How will you use it?

Spencer:We
will push on with our established strategy­ continuous performance
improvement, getting all the NT pieces in place (including more native
applications), and getting the Alpha message out in the marketplace. We can't
for a minute assume we have that breathing space, although we can certainly
appreciate and empathize with the enormous task Intel faces: conversion of an
immense installed base to a new architecture. In fact, we expect Intel will need
some sort of emulation/translation technology, and it will be interesting to see
what Intel does and when.

Pournelle:Imitation
is the sincerest form of flattery, but it has to feel like Microsoft is stealing
your well-deserved thunder. How do you feel about Microsoft slipping the rumor
about a future Intel emulator for Alpha, PowerPC, and MIPS just before you
release FX!32?

Spencer:We've
enjoyed a lot of positive press about FX!32, and it really doesn't feel like
thunder-stealing. If the rumors are true, we're happy Microsoft is interested in
providing cross-architectural support in NT. Whatever they provide is likely to
help us.

Jollie: As
Joyce said, if the rumors are true, they validate the need for FX!32. We also
believe that FX!32 will perform better because the Microsoft solution probably
won't use binary translation. It's not an area of expertise for Microsoft.

Marketing

Pournelle:The
largest segment of Alpha small-business users is the desktop graphics effort,
people running Lightwave and other compute-intensive applications. (For more
information on Lightwave, see Joel Sloss, "There's No Business Like Show
Business," and Lee Stranahan, "Move Over, SGI; NT Is Here," March
1996.) Have you been working with this community to make FX!32 useful to them?

Jollie: Well,
the ideal v1.0 users are people who have an Alpha, because they run their key
productivity applications, such as Photoshop, natively but need to run some
smaller, complementary apps or use office productivity apps, such as Office 95.
We have a few beta testers of this sort, and their use of and feedback on FX!32
confirm the success of FX!32 for those users.

Pournelle:In
the larger PC community, Alpha is, at best, seen as a server chip. How will you
position FX!32 in the user community to sell more Alphas?

Spencer:I
think FX!32 brings Alpha forward as a potential alternative on the desktop.
Developers and users have ignored a lot of our work getting native desktop apps,
and we hope the proposition that all 32-bit Windows apps can work on Alpha will
make people stop and take a good look at native apps, too. Users can no longer
dismiss Alpha because their apps won't run.

Performance and Usage

Pournelle:FX!32
doesn't execute 16-bit Windows applications, only 32-bit ones. Non-Intel NT
comes with an emulator to run 16-bit applications. How much faster is FX!32 than
NT's emulator?

Spencer:Much
faster. Rough measurements indicate 10 times.

Pournelle:How
many Windows program calls did you have to emulate­or are they already
native Alpha code?

Spencer:All
Windows calls go straight to native versions, taking full advantage of Alpha
native performance. Programs that heavily use Windows calls will see native
Alpha performance, because we are using native libraries.