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

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

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

The Problem
The issue at hand has many aspects. Can the Alpha platform fit into mainstream business computing? Can you do your job with just one box on your desk, and can that machine be an Alpha? Does the Alpha chip offer performance and compatibility advantages over the market-dominating Intel chips? Can you deploy Alpha systems right now, and can your application developers, engineers, and other technical and nontechnical users perform all their job functions on them? What about the cost? Or compatibility? In a nutshell, the question is whether Alpha is ready for prime-time deployment in the enterprise, or will it remain a niche player in the high-end workstation and graphics markets.

To date, the Alpha chips have enjoyed remarkable support from the software vendor community. More than 1500 native Alpha/Windows NT applications are available today, and the list is growing. However, many packages, such as MS Office95, desktop publishing and 2D graphics packages such as Photoshop and business productivity packages, still simply don't exist in Alpha versions. This lack of NT applications means that although your Alpha system is well suited to specialized high-end applications, such as CAD, 3D animation, video editing, and compute-intensive engineering and math applications, Alpha is not so well adapted to general business use. You need that second PC, an Intel box, for your regular work. And now the new Intel Pentium Pro CPUs are encroaching on the Alpha 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 the scene. To answer all the questions about the Alpha system's place in the NT market, 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 and dynamically convert it into Alpha-native instructions. This utility gives you compatibility with almost every existing 32-bit Intel-based NT application, including some programs that require special drivers (such as NewTek's LightWave 3D with its SentinelNT driver for the hardware dongle). With the final version of 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!32 at about 70% of its Alpha-native counterpart's speed). Such a super-fast Alpha CPU will outperform your Pentium-class system.

NT 4.0 has Insignia Solutions's full 486 enhanced-mode emulation for Win16 code, with multitasking of Windows 3.X and DOS applications and separate memory spaces for each. FX!32 offers similar functionality in the 32-bit realm, under both NT 4.0 Workstation and Server. Digital took on development of this tool now, rather than waiting for Microsoft to incorporate similar technology directly 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 is available and updates will improve performance and translated-code optimization). The first release offers performance in the range of 30% to 50% of native Alpha performance. Although this performance is not enough to outrun a 200MHz Pentium Pro-based system, you can immediately use your Alpha workstation for ordinary business functions, such as word processing and spreadsheets, that previously worked only on Intel systems. Engineers, animators, and other technical users can now integrate office work into the same environment in which they do their principal work.

On the developer's side, FX!32 can be a migration and porting path. You can get your Intel-compiled products into the hands of Alpha users now, while you work on a native port of the application. FX!32 is an important sign of support from Digital of the Alpha/NT platform, and this commitment shows vendors that embracing 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 Alpha systems, 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% of their possible system performance. Alpha users are likely to dump a translated application and look for a native one. FX!32 is only a stopgap solution to move Alpha-based systems into the mainstream while application developers move to support Alpha.

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

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

FX!32 runs as a layer between the Win32 kernel API and the Windows NT Executive, so all application calls go through FX!32. An intelligent manager decides whether to pass the code through transparently or launch the translator/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 of every instruction.

Figure 1 shows the FX!32 architecture's eight components: The FX!32 Server, Background Optimizer, Transparency Agent, Runtime and Emulator, Database, x86 Images, Translated Images, and Execution Profiles. The FX!32 Server manages the entire process; tracks program information; and handles translation, emulation, and all other functions. The Background Optimizer runs--as its name implies--in the background, where it can translate and optimize x86 code into native Alpha code without user intervention. The Transparency Agent handles user requests for x86 applications and passes the original x86 application image to the Runtime and Emulator. The Runtime and Emulator convert x86 routines into Alpha code on the fly, so that you can use an Intel app even if it hasn't been translated. The Database, stored in the NT Registry, contains information and attributes for the applications that run under FX!32 and optimization settings and indexes of Execution 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 lists of Intel program routines that have been used. Execution Profiles are stored for the Background Optimizer to use for translation. FX!32 stores Intel APIs, drivers, and new application registry keys in locations different from their Alpha counterparts, thus eliminating conflicts. Figure 1 shows the sequence of events and the data path.

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

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

Speed Limits
There are obvious limits to how fast your Intel programs will get. First, the most optimization occurs between the first and second time you run the Intel program, because that is the switch from no translated code (you are running entirely in emulation the first time) to a significant 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 Photoshop only to resize images), FX!32 will never optimize the code for doing anything else. So other functions, such as blurring and changing color levels, will be slow the first time you use them.

Third, the optimization thresholds you set affect how many times you will have 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 how frequently does it need to run this process?

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

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

You obviously want to configure FX!32 for the maximum possible optimization every time you run it, but putting the Intel code through the translator takes time, 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 it optimizes according to how you use the program.

Product Review
Digital has tested and proven an ever-increasing list of commercial and even shareware Intel applications under FX!32, including Adobe Photoshop, MS Office95, McAfee VirusScan 2.0, and Visual C++. In the Windows NT Magazine Lab, we also ran NewTek LightWave 3D 4.0 and Elastic Reality 1.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 how you acquire it from Digital, you will install FX!32 either from an archive file from a Web-site download or from a floppy install set. You must reboot the system to complete the process. Before FX!32 will run and let you use your Intel programs, you wait for the FX!32 Enabler (which initializes your Alpha system to use FX!32) to load each time you restart the system. This load takes only another 15 to 20 seconds and does not prevent you from doing other things on the computer in the meantime.

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

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

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

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

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

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

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

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

When you are testing FX!32 or implementing it on your desktop, keep in mind that if a certain Intel-native program doesn't work under FX!32, it can be NT 4.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, and verify that the program functions properly.

Most applications will not have this problem, but Digital found numerous examples of software that doesn't load under FX!32. The company tried the software on an Intel/NT 4.0 system and had the same problem. These problems raise NT 4.0 compatibility issues that the software vendors will have to resolve. Digital is in a continual debug and tuning process with FX!32, both for problems in applications they and others test and for adjusting the performance of 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 your Alpha. However, in an environment such as Visual Basic 4.0, its built-in debugging facilities can help make your code work.

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

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

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

Before making an upgrade or initial purchase decision, look at the tasks you need to perform and whether Alpha-native apps are available for them. If everything you do requires Intel programs, don't buy an Alpha. If you have a fair 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 computer is a good choice.

Don't forget that FX!32 is still just a stopgap solution. The goal is to run 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 Alpha CPU.

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 programs
Digital Semiconductor * 800-344-4825
Web: www.digital.com/info/semi-conductor/dsc-salestech.html
Email: semiconductor@digital.com
Price: Free