FX!32 - 01 Oct 1996

Digital's new Intel Win32 emulator and translator for Windows NT opens new doors for Alpha users.

Joel Sloss

September 30, 1996

13 Min Read
ITPro Today logo

I remember being excited about my first desktop computer, which hada whopping 1.2MHz CPU. Boy, those old Apple II+s were really something: 64KB ofRAM, a 160KB 5.25" floppy drive, peripheral slots...the works. Who couldask for more?

Now--just 15 years later--in basically the same sized box, you can have a500MHz CPU, 512MB of RAM, 50GB of disk, audio and video capabilities, and on andon. The list of possibilities is almost endless.

The problem nowadays isn't as much speed, but how many computers andoperating systems you need on your desk to get your job done. For example, youuse an Alpha machine for CAD, but have an Intel-based PC on your desk for simplebusiness applications such as word processing and spreadsheets. Digital hasattempted to solve this problem with Digital FX!32, the first full Intel Win32emulator and translator for Windows NT.

The Problem
The issue at hand has many aspects. Can the Alphaplatform fit into mainstream business computing? Can you do your job with justone box on your desk, and can that machine be an Alpha? Does the Alpha chipoffer performance and compatibility advantages over the market-dominating Intelchips? Can you deploy Alpha systems right now, and can your applicationdevelopers, engineers, and other technical and nontechnical users perform alltheir job functions on them? What about the cost? Or compatibility? In anutshell, the question is whether Alpha is ready for prime-time deployment inthe enterprise, or will it remain a niche player in the high-end workstation andgraphics markets.

To date, the Alpha chips have enjoyed remarkable support from the softwarevendor community. More than 1500 native Alpha/Windows NT applications areavailable today, and the list is growing. However, many packages, such as MSOffice95, desktop publishing and 2D graphics packages such as Photoshop andbusiness productivity packages, still simply don't exist in Alpha versions. Thislack of NT applications means that although your Alpha system is well suited tospecialized high-end applications, such as CAD, 3D animation, video editing, andcompute-intensive engineering and math applications, Alpha is not so welladapted to general business use. You need that second PC, an Intel box, for yourregular work. And now the new Intel Pentium Pro CPUs are encroaching on theAlpha performance domain, so the Alpha solution is coming into question.

At this point, FX!32 and Digital's new 433MHz and 500MHz CPUs step into thescene. To answer all the questions about the Alpha system's place in the NTmarket, let's look at FX!32 and these new CPUs.

One Solution
FX!32 combines an emulator and translator that can take Intel Win32 code anddynamically convert it into Alpha-native instructions. This utility gives youcompatibility with almost every existing 32-bit Intel-based NT application,including some programs that require special drivers (such as NewTek's LightWave3D with its SentinelNT driver for the hardware dongle). With the final versionof FX!32 due out in mid-1997, Digital expects average performance of up to 70%of native Alpha speed (i.e., an Intel-compiled application will run under FX!32at about 70% of its Alpha-native counterpart's speed). Such a super-fast AlphaCPU will outperform your Pentium-class system.

NT 4.0 has Insignia Solutions's full 486 enhanced-mode emulation for Win16code, with multitasking of Windows 3.X and DOS applications and separate memoryspaces for each. FX!32 offers similar functionality in the 32-bit realm, underboth NT 4.0 Workstation and Server. Digital took on development of this toolnow, rather than waiting for Microsoft to incorporate similar technologydirectly into NT 5.0--for details, see Alex Pournelle's, "Emulation: Out of the Lab and onto the Desktop".

FX!32 has some obvious uses and repercussions now (the initial version isavailable and updates will improve performance and translated-codeoptimization). The first release offers performance in the range of 30% to 50%of native Alpha performance. Although this performance is not enough to outrun a200MHz Pentium Pro-based system, you can immediately use your Alpha workstationfor ordinary business functions, such as word processing and spreadsheets, thatpreviously worked only on Intel systems. Engineers, animators, and othertechnical users can now integrate office work into the same environment in whichthey do their principal work.

On the developer's side, FX!32 can be a migration and porting path. You canget your Intel-compiled products into the hands of Alpha users now, while youwork on a native port of the application. FX!32 is an important sign of supportfrom Digital of the Alpha/NT platform, and this commitment shows vendors thatembracing Alpha is not a waste of time, money, and effort.

Some vendors are happy waiting it out and not porting their applications.They are content to let their programs run in a translated mode on Alphasystems, rather than recompile. This approach may be a mistake in the long run,as typical Alpha users are speed mongers and won't be content with 30% to 50% oftheir possible system performance. Alpha users are likely to dump a translatedapplication and look for a native one. FX!32 is only a stopgap solution to moveAlpha-based systems into the mainstream while application developers move tosupport Alpha.

Digital is putting a lot of effort and resources into this product andremarkably, giving it away. You'll be able to download it from the DigitalSemiconductor Web site as soon as it is available in release form. FX!32 willcome standard on all newly shipped Alpha/NT systems and will eventually be partof Windows NT.

Special FX
FX!32's name refers to both the technology (Fasttransparent eXecution of Win32 applications) and the add-on to NT. The FX!32Server intercepts Intel Win32 code installed or run on an Alpha system andeither converts it into Alpha-code (i.e., the Intel application runs inemulation mode, where FX!32's Runtime environment contains the entire x86user-mode instruction set) dynamically--via a runtime interpreter--or runs apreviously translated program image from disk.

FX!32 runs as a layer between the Win32 kernel API and the Windows NTExecutive, so all application calls go through FX!32. An intelligent managerdecides whether to pass the code through transparently or launch thetranslator/emulator. FX!32 does not affect performance of native Alpha/NT code:This sequence is invoked only at application launch, rather than at the level ofevery instruction.

Figure 1 shows the FX!32 architecture's eight components: The FX!32 Server,Background Optimizer, Transparency Agent, Runtime and Emulator, Database, x86Images, Translated Images, and Execution Profiles. The FX!32 Server manages theentire process; tracks program information; and handles translation, emulation,and all other functions. The Background Optimizer runs--as its name implies--inthe background, where it can translate and optimize x86 code into native Alphacode without user intervention. The Transparency Agent handles user requests forx86 applications and passes the original x86 application image to the Runtimeand Emulator. The Runtime and Emulator convert x86 routines into Alpha code onthe fly, so that you can use an Intel app even if it hasn't been translated. TheDatabase, stored in the NT Registry, contains information and attributes for theapplications that run under FX!32 and optimization settings and indexes ofExecution Profiles. The x86 Images are the original Win32 Intel program files.The Translated Images are the portions of those programs run through FX!32,translated into Alpha native code, and optimized. Execution Profiles are listsof Intel program routines that have been used. Execution Profiles are stored forthe Background Optimizer to use for translation. FX!32 stores Intel APIs,drivers, and new application registry keys in locations different from theirAlpha counterparts, thus eliminating conflicts. Figure 1 shows the sequence ofevents and the data path.

When you execute a Win32 x86 (a.k.a. Intel) program, the FX!32 Serverdetects that the program is not native Alpha code. FX!32 takes over and loadsthe alien program and any previously translated and optimized code. Adatabase, which uses the NT Registry to store all relevant information aboutoptimization levels and thresholds and usage histories, stores and indexes thetranslated code on your local hard drive.

Each subsequent time you run that program, FX!32 further optimizes itaccording to the thresholds you set up, the preferred optimization level, andthe profiles that FX!32 builds. Each time you run the application, FX!32 gathersmore information about the program, translates more of it into native Alphacode, and makes it faster. Another contributing factor to overall speed istransparent access to Alpha-native drivers and APIs. Where possible, FX!32substitutes true native code for emulated or translated routines. For example,FX!32 uses the Alpha versions of kernel32.dll, user32.dll, and gdi32.dll, whichcome with the Alpha version of NT, to perform common user operations, ratherthan trying to emulate the x86 versions of these libraries.

Speed Limits
There are obvious limits to how fast your Intelprograms will get. First, the most optimization occurs between the first andsecond time you run the Intel program, because that is the switch from notranslated code (you are running entirely in emulation the first time) to asignificant amount of the program in Alpha-native format.

Second, FX!32 can optimize only the code that you run. If you use the program for the same task over and over (for example, you run Adobe Photoshoponly to resize images), FX!32 will never optimize the code for doing anythingelse. So other functions, such as blurring and changing color levels, will beslow the first time you use them.

Third, the optimization thresholds you set affect how many times you willhave to run the application before it reaches its best performance. For example,how much new code does the optimizer need to see before it retranslates, or howfrequently does it need to run this process?

Last, remember that you are still running translated code, soconverting instructions for one type of CPU into instructions for a completelydifferent one involves overhead. Digital's ultimate goal is to reach 70% ofnative performance, but performance depends on how you set up FX!32, how you usethe Intel programs, and so forth. You can run in emulation mode only and neveruse the translator, all according to your performance needs.

All this processing occurs in the background by default, but you can alsodo it manually by using the FX!32 Manager tool. It lets you set all attributesfor the FX!32 Server.

You obviously want to configure FX!32 for the maximum possible optimizationevery time you run it, but putting the Intel code through the translator takestime, and you can optimize only after you run the x86 program again:FX!32 won't convert an entire program that it has never seen before, because itoptimizes according to how you use the program.

Product Review
Digital has tested and proven an ever-increasinglist of commercial and even shareware Intel applications under FX!32, includingAdobe Photoshop, MS Office95, McAfee VirusScan 2.0, and Visual C++. In the WindowsNT Magazine Lab, we also ran NewTek LightWave 3D 4.0 and Elastic Reality1.2, without major incident (see "Performance Testing with FX!32," on page 139, for information on our test results).

Installation
FX!32 is easy to install and use. Depending on howyou acquire it from Digital, you will install FX!32 either from an archive filefrom a Web-site download or from a floppy install set. You must reboot thesystem to complete the process. Before FX!32 will run and let you use your Intelprograms, you wait for the FX!32 Enabler (which initializes your Alpha system touse FX!32) to load each time you restart the system. This load takes onlyanother 15 to 20 seconds and does not prevent you from doing other things on thecomputer in the meantime.

After Installation
After you install FX!32, you'll have a newProgram Group with the FX!32 Manager, FX!32 Enabler (which boots automaticallywith NT 4.0), and FX!32 Help. From this point on, you can run Win32 x86 programstransparently on your system; FX!32 will optimize your programs in thebackground.

You don't need to interact with FX!32 if you don't want to. The FX!32Manager sets FX!32 Server's operational characteristics, such as optimizationlevels, maximum disk space allotted to translated image files, and processpriority.

FX!32 Manager lets you manually optimize your Intel programs; manage thedatabase; and, interestingly, import and export your databases and executablesto or from other Alpha systems. This capability lets you set up a newAlpha-based computer, and you won't have to train it with all the applicationsyou use. Simply port the existing profiles and translated images to the newsystem, and everything is ready to go.

Screen 1 shows the FX!32 Manager utility's main screen. Here, you can viewall the translated programs you have (both the executables and their associatedtranslated images), watch the progress of translation routines as they'rerunning, and set attributes.

Screen 2 shows the Application Properties dialog. Here, you can viewstatistics about the program and set optimization status.

Screen 3 shows the Preferences dialog for the FX!32 Server Database. Itlets you set the maximum size of the database, enable manual optimizationthresholds, and set FX!32 for emulation mode only.

NT Compatibility
FX!32 will work under NT 3.51. However, certaindrivers and poorly written applications won't run properly, and you'll have toadd the FX!32 Enabler to your Startup group.

Even then, you can have problems with the Enabler and FX!32, becauseDigital designed it to run under NT 4.0. For example, 32-bit applications with16 bit installers won't work with FX!32 under NT 3.51. It doesn't have theenhanced-mode 486 emulator for Win16 apps, so you can't install these programsproperly.

When you are testing FX!32 or implementing it on your desktop, keep in mindthat if a certain Intel-native program doesn't work under FX!32, it can be NT4.0's fault. Before wasting too much time trying to debug your Alpha system,install the problem program on an Intel-based computer running NT 4.0, andverify that the program functions properly.

Most applications will not have this problem, but Digital found numerousexamples of software that doesn't load under FX!32. The company tried thesoftware on an Intel/NT 4.0 system and had the same problem. These problemsraise NT 4.0 compatibility issues that the software vendors will have toresolve. Digital is in a continual debug and tuning process with FX!32, both forproblems in applications they and others test and for adjusting the performanceof the translation routines.

Currently, FX!32 doesn't support a debug mode for application development,so you won't be able to run traces and such if you do Intel programming on yourAlpha. However, in an environment such as Visual Basic 4.0, its built-indebugging facilities can help make your code work.

Nothing to Lose
Use FX!32 on your Alpha system. You have nothingto lose and a lot to gain. Under this first release of FX!32, Intel applicationsmay not outperform a 200MHz Pentium Pro, but the ability to run them at all onan Alpha is a big step in the right direction.

As the technology progresses, the translated programs will run faster andfaster. If Digital keeps ahead of Intel in raw computing speed, an Alpha/NT/FX!32 system will eventually outperform standard desktop PCs, while retainingall the power you expect of an Alpha system. Be aware that you still have to buylicenses for the Intel software you use on your Alpha system.

A New Realm
So yes, if you already have an Alpha and don't needsuper high-end Intel-program performance, you can get rid of that old second PCon your desk and do all your work on one Alpha workstation. However, if you arelooking to upgrade from a high-end Pentium or Pentium Pro to an Alpha, FX!32isn't quite ready.

Before making an upgrade or initial purchase decision, look at the tasksyou need to perform and whether Alpha-native apps are available for them. Ifeverything you do requires Intel programs, don't buy an Alpha. If you have afair mix of native and emulated programs, such as engineering or 3D animation,and most of your work will be on the native side, buying an Alpha-based computeris a good choice.

Don't forget that FX!32 is still just a stopgap solution. The goal is torun all applications native on the Alpha/NT platform. In the meantime, however,this technology opens up a new computing realm for both Digital and the AlphaCPU.

Please see "New Alpha PC Strategy" and "New Alpha PC Raises the Bar"

FX!32

System Requirements: Windows NT 4.0 (Server/Workstation); Alpha CPU, 32MB of RAM; 8MB disk for FX!32; 1 to 2 times the space of installed Intel programsDigital Semiconductor * 800-344-4825Web: www.digital.com/info/semi-conductor/dsc-salestech.htmlEmail: [email protected]Price: Free

Sign up for the ITPro Today newsletter
Stay on top of the IT universe with commentary, news analysis, how-to's, and tips delivered to your inbox daily.

You May Also Like