I’m working with computers for a long time now, but I still remember the times when I was a student. There was good but expensive hardware like ISA Novell NE2000 LANcards or Hercules monochrome graphics adapters. I could never afford the original ones and had some trouble because in many cases they were the only ones supported by software. So hardware emulation was quite common. Even today some of the virtual machines offer a NE2000 LAN interface for the guest as a default.
Past: Emulate what you could not afford / Today: Emulate what’s not available any more
Of course today all my customers and I could afford to buy a NE2000 card, but it’s not possible anymore and therefore you must go for virtualization or significantly change your software. For internally developed software we see mainly three problems:
1. Developer is retired
2. Source got lost somehow
3. The development tool chain (e. g. compiler) is not available any more
With sufficient effort you can manage this, but for 3rd party software in most cases you are lost. Especially if:
• Supplier is no longer existing
• The version you are using went out of support 10 years ago
Today: Emulate to reduce Risk
One big customer of Kontron had a server issue of the 3rd kind. He had a system based on Intel but it contained a special hardware based on a 68000 Motorola CPU. This CPU card he could not maintain anymore. So he was afraid to port the entire software to x86 but at the same time he could not update the design of the old 68K board due to lack of tools and resources. It was hard to estimate the risk and needed time for such redesign. So Kontron calculated the effort to “emulate” the card and the 68k CPU in one partition. It showed that even the risk estimation was better in time and cost. So we went this way and in the future, the customer can still think on porting the software.
Virtualize to be more future proof
Once your software is ported – or more precise – adapted to using in an emulated environment you start to benefit from future developments in hardware or software. You just got rid of the task adopting your unit to next generation of say Ethernet or Graphics interfaces. And this without investing money in frequent last time buys. Using next generation hardware now does not require porting your software. In contrary: Your supplier needs to deliver the emulation and you will focus on the real core of you application, not on the porting any more.
What’s your experience in using virtualization to do emulation?