Universal Emulators Return
webmilhouse writes "Wired has an article about Transitive Corporation that claims their software "allows any software application binary to run on any processor/operating system" without any performance hit. That would allow any program written for Windows to run on Linux or Mac, and vice-versa, which Wired likened to digital alchemy. The Transitive software is supposed to be released today. What do you think, vaporware or miracle?"
Okay, but for a product that really is this good, why is the newest news on their site dated March 2003? (There's an article in 04, but it has nothing to do with what they're releasing)
They're talking about recompiling sections of critical code, like java's HotSpot. It'll be interesting to see how fast it ends up - the startup time is a pain in java, but it's pretty decent after that. I can't find a source for the "no performance hit" bit. It looks real, and quite impressive, but not exactly what the summary indicates ;-)
Free Java games for your phone: Tontie, Sokoban
Yeah, obviously!
QuickTransit fully supports accelerated 3-D graphics and about 80 percent computational performance on the main processor. It requires no user intervention: It kicks in automatically when a non-native application is launched.
It sounds like it is software that translates one machine language to another? Pretty sweet idea!
It will still have some java-ish problems with each different form of hardware needing a unique version to translate. And then updating each of those versions as each change in the operating systems occur, etc.
Davak
In demonstrations to press and analysts, the company has shown a graphically demanding game -- a Linux version of Quake III -- running on an Apple PowerBook
Does this company realize that proper existing ports of each of those particular pieces of software exist in some kind of native form for those architectures? I've used GIMP in Windows w/ no problems. Also, as mentioned previosuly, Quake III already exists for the Mac as well. What good are they doing by using software that already exists in ports? I want to see a copy of some DirectX game running on a Mac/Linux w/o a performance hit. This company so far has not proven anything by using the two comparisons cited in the article.
there is mention only of unices. Operating System Mapper. Dynamite supports operating system mapping between any two Unix/Linux-like operating systems, as well as mapping between mainframe and any Unix/Linux-like operating systems. Don't see "Windows" mentioned in there. I assume it would be a lot easier to run a Linux version of Quake 3 on BSD-based Mac OS X than to convert stuff to/from a rather more different OS such as Windows.
Since TFA is a worthless content-devoid POS, and since the transitive website is /.ed, here is
a useful link on HOW they claim to do it. It
sounds plausible, at least.
http://66.102.7.104/search?q=cache:KjTa-qAM7LQJ:ww w.transitive.com/technology.htm+site:www.transitiv e.com+-qwerty&hl=en
/obvious
There was a translation solution in place back in the early 90's: Apple was working with a company called Echo Logic (probably not in existence today; please don't /. the logical URL!), a spin-off of Bell Labs, that could convert 68K binaries to PowerPC as an approach to migration to PowerPC.
I worked with them for a while to see if we could port our application (which would have required tons of work to re-compile for PowerPC); the technology was impressive, but aspects of our code gave it fits (trap patching, and dispatch tables that were effective self-modifying code).
The EL technology identified code blocks in the binary, built an intermediate representation of all the effects of each code block, and translated it back to binaries in the target architecture. Theoretically feasible, but computationally very expensive. In some test cases, the translated code was in fact more efficient from the original, because the software was able to detect unused output of a code block, and re-code the block to eliminate the unused "side-effects."
Ten+ years later, maybe somebody has more of the gnarly problems worked out. But I would bet there are issues that can't be solved with technology; i.e., the binary software on the "source" system. Presumably you can find and translate the system binaries to build a translated app, but wouldn't this constitute "reverse engineering" that most software licenses prohibit?
Yep, none of this is new tech. In fact, it's pretty old tech at this point. Emulators/translators and everything in between have been the subject of experimentation for decades.
Actually, I expect to see someone sit down and write this for Parrot sometime soon. Especially of interest would be an S/390 emulator written in Parrot.
Parrot, for those who don't know, is a VM that targets very high level languages, but it's flexible enough and has a sufficiently strong JIT compiler that a hardware emulator extension to Parrot could easily produce code that would perform as well as the described product.
The cool part about writing such an emulator for Parrot is that you get access to the resulting emulated code from a number of high-level languages, so you could port over your S/390 airline application written in TPF and call its routines from a Java, Perl, Scheme or Ruby program, jumping into and out of hardware emulation as you go. While high-level languages would only have gross access to data as opaque objects, the hardware emulator could provide the ported code with everything that it expects.
"Emulation" is a sophisticated art at this point, and it's going to get very interesting over the next few years.
I'll wager that if I took something like "Quicken" or "Microsoft Office Professional" for Windows and tried to run it on a Mac running QuickTransit that it certainly wouldn't work. I doubt if iMovie would run on a QuickTransit-enabled PC. THAT, my friends is the "computer-alchemy" goal. Of course, I would LOVE to be proven wrong on this!
Now, if they are talking about "any program written for Windows [that adheres to QuickTransit Requirements] to run on Linux..." then they may be accurate, but again, this really isn't "universal emulation".
My mom always said, "Jim, you're 1 in a million." Given the current population, there are 7000 of me. God help us all!
After reading the article, I personally see the whole issue as much ado about nothing. The quotes provided in the article leave me with the impression that those who were involved with the article had little experience with emulators or were quoted out of context. I think this is obvious given remarks like "One of the key breakthroughs is an 'intermediate representation'..." that imply revolutionary thinking when in fact the ideas are not new.
I'm sure their product does whatever they designed it to do, but the article alludes to platform migration and operating system virtualization. This screams out to me that the emulated programs are going to be very well behaved out of necessity, and most hardware interfaces will not be accessable except through API calls. Additionally, desktop PC software and operating environments tend to be much more 'regular' than embedded systems like game consoles. It is much easier to describe the behavior of user-mode code on a platform with a generic memory space and API set than it is to describe the behavior of an embedded multiprocessor system with control registers, DMA, custom graphics and audio subsystems and banked memory.
I also have to question the allegation that "no one has successfully developed an emulator for multiple processors and operating systems." Dynamic recompilation is not new. Intermediate representations are not new. Surely there exist some emulators which are capable of emitting multiple native instruction encodings in the backend. If none exist, I doubt it is because they are not capable of doing so.
Describing a processor architecture and providing an API mapping is not a trivial task by any means. The Transitive tool doesn't just 'simply work,' its requires a massive undertaking to prepare the behavior descriptions that I imagine would be in some ways more difficult than writing an ad-hoc single-platform emulator. I think that calling their tool a "hardware virtualizer" is probably a good idea, but not because its faster than an "emulator," but more because its likely nowhere near as powerful as a system emulator.
Finally, I would also beware the performance claims. Dynamic recompilation is certainly the way to go for ultimate performance, but when you generalize architectures, you often lose the ability to take advantage of native features. Also related to processor capabilities, the overhead incurred by emulation is highly correlated to the disparity between the host platform and the emulated platform. Transmeta processors suffer about 20% overhead and thats using a flexible VLIW architecture designed with x86 emulation in mind and using a dynamic recompiler that supports *only* x86. Thats a huge performance penalty, even if programs are running as fast as needed. Given the generalized emulation approach, I think its clear that the feasibility of such an approach is going to depend heavily on the host platform being more powerful/flexible than the emulated platform.
FWIW, I am the author of Nuance, the Nuon emulator. Nuance currently performs all of the same feats listed in the article including block translation, optimization and 'OS' virtualization (native implementation of the Nuon BIOS). I'm currently working on emitting native code using a custom x86 run-time assembler and backpatch mechanism.