FX!32: A Profile-Directed Binary Translator

  • Authors:
  • Anton Chernoff;Mark Herdeg;Ray Hookway;Chris Reeve;Norman Rubin;Tony Tye;S. Bharadwaj Yadavalli;John Yates

  • Affiliations:
  • -;-;-;-;-;-;-;-

  • Venue:
  • IEEE Micro
  • Year:
  • 1998

Quantified Score

Hi-index 0.00

Visualization

Abstract

Because the DIGITAL Alpha architecture provides the world's fastest processors, many applications, especially those that require very high performance, have been ported to that architecture. However, many other applications are available only under the x86 architecture. DIGITAL FX!32ý was designed to make the complete set of applications, both native and x86, available to Alpha. The goal for DIGITAL FX!32 is to provide fast and transparent execution of x86 Win32 applications on Windows NT Alpha. DIGITAL FX!32 achieves its goal by transparently running those applications at speeds that are comparable to high-performance x86 platforms. Before the introduction of DIGITAL FX!32, there were two technologies for running an application on a different architecture than the one for which it was originally compiled: emulation and binary translation. Each technology has an advantage, but also a drawback. Emulation is transparent and robust, but delivers only modest performance. Binary translation[11] is fast, but not transparent. For the first time, DIGITAL FX!32 combines these technologies to provide both fast and transparent execution. DIGITAL FX!32 consists of three interoperating components. There is a run-time environment that provides the transparent execution, a binary translator (the background optimizer) that provides the high performance, and a server that coordinates them. Although DIGITAL FX!32 is transparent and does not require user intervention, it includes a graphical interface for monitoring status and managing system resources. The first time an x86 application is run, all of the application is emulated. Together with transparently running the application, the emulator generates an execution profile that describes the application's execution history. The profile shows which parts of the application are heavily used (for this 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 as replacement for all the frequently executed procedures. When the application is next run, the native Alpha code is used and the application executes much faster. This process is repeated whenever a sufficiently enlarged profile shows that it is warranted. This article provides an overview of DIGITAL FX!32 and describes in depth the three most significant innovations: Transparent operation, Interface to the native APIs, Profile-driven binary translation.