Does Intel VT-x (or AMD Pacifica/AMD V) Support Real Virtualisation

hypervisorvirtualization

I am still confused regarding the mechanisms of virtualisation.

I understand why the x86 architecture is/was not by itself virtualisable and why other architectures are (and why the 68k architecture was except for the MC68000 itself etc.).

And then I read about Intel VT-x and AMD V which add virtualisation capabilities to x86.

However, the virtualised CPU appears to be a different CPU than the physical CPU; namely the physical CPU has VT-x while the virtual CPU does not.

While this is not a practical problem (no operating system one typically wants to run in a VM requires VT-x), it does make me wonder whether this constitutes real virtualisation.

The 80386 already had the ability to virtualise a CPU with fewer features than the 80386 itself, the virtual x86 mode. Is VT-x just another layer like that (ring -1, I suppose) or is it real virtualisation?

(What will happen if one wants to virtualise systems that use VT-x? Shouldn't true virtualisation allow for unlimited levels of virtualisation?)

Sorry for a dumb question. Or rather, sorry for a theoretical rather than practical question.

Update: I did this graphic to try to understand this all better:

http://www.netneurotic.net/bin/VMM.png

Best Answer

I understand why the x86 architecture is/was not by itself virtualisable.

That is not true at all. It is virtualisable via Binary translation or more commonly referred as Full virtualisation. You emulate every component of a traditionnal computer with a piece of software sitting on top of an OS.

And then I read about Intel VT-x and AMD V which add virtualisation capabilities to x86.

To be more correct, it adds extra virtualisation capabilities. To be precise, it adds processor extensions that allow processing of virtualisation queries faster. It also adds a -1 ring for 64-bits processor since the number of rings went down to 2 with AMD64.

You can virtualize on x86 using "Full virtualisation" (Virtual PC, VirtualBox) or Paravirtualisation (Xen, Hyper-V). The Intel VT/AMD-V allows you to accelerate virtualisation and do "Hardware Assisted Virtualisation".

I don't know what you mean by real virtualisation... any type of virtualisation is real, they enable you to have more then one OS on a single computer. That's what virtualisation is about.

I hope this was clear. Do not hesitate to comment if you want more info.

Edit : If you really want to know a lot more about this, get this book. It taught me everything.