In the article Formal Requirements for Virtualizable Third Generation Architectures (Communications of the ACM vol. 17 no. 7, July 1974), Gerald J. Popek and Robert P. Goldberg use formal techniques to determine the set of necessary and sufficient conditions for a computer architecture to efficiently support self-virtualization. (For example it is a sufficient condition for virtualisation that all 'sensitive' machine instructions are privileged)
It is possible for a computer that does not satisfy the Popek and Goldberg virtualization requirements to support a virtual machine, but generally this requires a much more complex virtual machine monitor program and imposes a higher performance penalty. For example, the common x86 architecture used in modern PCs does not yet (in late 2004) meet the Popek and Goldberg virtualization requirements, yet there are several virtual machine monitors commercially available for it, including VMware and Microsoft Virtual PC. In both cases, the virtualization is accomplished by a dynamic recompilation of code.
In some cases an architecture that does not satisfy the Popek and Goldberg virtualization requirements is able to efficiently support a restricted virtual machine that imposes special requirements on the guest operating system. This approach is used on the x86 by plex86 and Xen.
A similar technique is believed to be used by the proprietary package Win4Lin, which originates in work done by Popek and his company, Locus.