Product managers and systems developers face a dilemma when confronted by the obsolescence of a hardware platform. Historically the choice has often been between obsoleting the system or spending time and resources updating and migrating the application to new hardware. Now there is a lower effort alternative using virtualization. Virtualization can hide missing or changed delivery platform hardware and processor differences. It may also extend product life without committing to a full re-development.
Nowhere are the effects of hardware obsolescence seen in a more striking fashion than in large scale military development projects. It’s possible for the software developed for some military systems to span a decade or more in the development process, and outlive three generations of processor developments, including the end of life for the original processor. Today such large scale developments universally adopt a structured set of software rules aimed at minimizing the effort required to target a new or modified hardware architecture.
But what do you do when you’re faced with an overwhelming amount of legacy software hosted on discontinued hardware? Or the time required to retarget the software exceeds the remaining run of available hardware? Or when legacy code will only work on a specific operating system version under impossible time constraints?
One of the first legacy programs that I ever worked on ran on an IBM 1620 simulation program for an IBM 650 computer. The 650 was the target environment for the actual software. The IBM 1620 code simulated all of the operations and peripherals of the original 650. In effect, the 650 code ran in a specialized “virtual” machine implemented entirely in software.
Modern virtualization technology can serve the same purpose as that IBM 650 simulation software – extend the useful life of a legacy software application without investing in full rewrites. Hypervisors like that offered by Wind River Systems (1) provide the basic tools required to continue running software with minimal time investment.
Legacy code falls into several groups:
- Code that targeted a specific processor that is no longer available
- Code written to exploit specific features of a discontinued or no-longer-supported Operating System
- Code that is useful but does not warrant a full porting effort
- Code that must be rehosted as part of a strategy to reduce hardware requirements
Wind River’s virtual board mechanism enables the porting and paravirtualization of an existing proprietary operating system, or legacy code that is fully intertwined with the operating system, onto the hypervisor. Virtualization also permits continued use of no-longer-supported Operating Systems when the specific hardware that would run the code is no longer available. Porting legacy code to a virtualized environment may be as simple as selecting a system like TenAsys’s eVM ® which addresses a related issue of consolidating hardware platforms. The TenAsys approach combines a version of Microsoft (3) Windows with the company’s realtime OS.
Selecting a multi-core CPU permits designers to simplify porting legacy code because the chance of timing conflicts is significantly reduced or eliminated. Virtualization is used to abstract the code from the physical environment. For unique processors, each virtual hardware board provides the opportunity to simulate “odd ball hardware” from legacy systems within the virtual board space.
Embedded hypervisors are implemented using minimal overhead code – a thin layer of code that partitions hardware into virtual environments. Wind River calls these virtual environments a “virtual board.” An OS resides inside each virtual board. Virtual boards run in separate address spaces which are protected in hardware by the Memory Management Unit. A virtual board that can run on a single core can run Symmetric Multi Processing across multiple cores, or can be scheduled with other virtual boards on a single core on either a priority-preemptive or time-based schedule. This is accomplished by virtualizing key components of a system:
- CPU – virtualizing the CPU permits sharing a single core with multiple virtual boards. Each virtual board runs on one physical processing core. Alternatively, a virtual board may use a dedicated single core or a set of cores.
- Memory – memory virtualization requires partitioning the physical memory so multiple virtual board partitions can use parts of the real memory. This creates an abstraction layer that separates and controls memory access.
- Devices – Input/Output Devices and individual processor hardware can either be dedicated to a single virtual board or virtualized and shared between multiple virtual boards.
In all of these virtualization choices, physical devices conceptually are below the hypervisor. It is possible to simulate obsolete hardware operation through software additions controlled by the hypervisor.
According to Wind River, software test and verification is reduced or eliminated for legacy code running on new platforms using virtualization.
Green Hills Software (4) adds a complete business unit charged with aiding customers in adapting to the virtualized environment. A wide range of engineering services in support of virtualization efforts can be contracted to Green Hills. The company’s virtualization offering focuses on the security aspects of code reliability and especially aerospace and defense applications.
Virtualization can add years of useful life to legacy operating on orphaned processors.
What legacy applications could you use virtualization to avoid costly and time-consuming rewrites?
- Wind River Systems is an Associate memer of the Intel Embedded Alliance
- TenAsys is an Affiliate memer of the Intel Embedded Alliance
- Microsoft® Corporation is an Associate memer of the Intel Embedded Alliance
- Green Hills® Software is an Affiliate memer of the Intel Embedded Alliance
Roving Reporter (Intel Contractor)
Intel® Embedded Alliance