A virtual machine (VM) is a software implementation of a physical computer. Computer programs designed to execute on the physical machine execute in a similar way when executed on a VM. A VM provides a complete system platform to support a full operating system (OS). A physical machine can be shared between users by using different VMs, each running a different OS.
Modern processor architectures have enabled virtualization techniques that allow multiple operating systems and VMs to run on a single physical machine. These techniques use a hypervisor layer that runs directly on the physical hardware and mediates accesses to physical hardware by providing a virtual hardware layer to the operating systems running in each virtual machine. The hypervisor can operate on the physical machine in conjunction with a ‘native VM’. Alternatively, the hypervisor can operate within an operating system running on the physical machine, in conjunction with a ‘hosted VM’ operating at a higher software level.
Examples of VM technology are:                Linux Kernel-Based Virtual Machine (KVM) allows one or more Linux or Windows virtual machines to be run on top of an underlying Linux that runs KVM.        Xen allows a guest (virtualized) Linux to be run on top of Linux.        Parallels allows Linux and Windows on top of Mac OS X.        VMWare allows Linux and Windows systems on top of Mac OS X, Windows and Linux systems.        
A user may want to migrate a workload operating on one physical machine (host A) to another physical machine (host B), for example, for machine maintenance or for performance optimisation. If the instruction set architecture is the same on both host A and host B, the VM needs to be shut down on host A, restarted on host B, and the workload migrated. However, if the ISA on each physical machine is different, a migration is problematic, because, for example, the format state of the VM on host A is inappropriate for the format state of the VM on host B.