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.
Joel Sloss examines FX!32's performance, credibility, and architecture, starting on page 137. To get the inside story, I conducted the following email interview with Philippa Jollie, FX!32 product manager, and Joyce Spencer, engineering manager.
The Development Cycle
Pournelle: How long did FX!32 gestate?
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 partmore like a keen understanding of the psyche behind a particular program!
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?
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.
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 emulateor 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.