Mike Marion wrote:
Quoting "Gregory K. Ruiz-Ade" <[EMAIL PROTECTED]>:

anyone have a link that explains, for stupid people like me, the
differences between paravirt and full virt on xen, including all the
limitations of the two?

Quick and dirty (I might be wrong, but this is how I understand it):
- Paravirt - Now hw support required. Quest OSes must know they're running inside paravirt host (i.e. linux with xen kernel). Has speed advantages over full because it's basically like an OS inside processes and so the main/dom0 install is basically just switching processes. You also cannot cross bitness (i.e. no 32bit guest OS on 64bit dom0 OS.. yet anyway)

- Full virt - Requires HW support (i.e. AMD Pacifica or Intel VTx extensions). Advantages are the guest OS doesn't even know it's being virtualized. Disadvantage is more of a speed hit as the hw basically has to context switch out all the info (registers and such) for each switch between virtual hosts (vs the paravirt being done by OS).

If this is indeed the case, then the x86 architecture is not the best model for the job. A better architecture would be a memory-to-memory architecture such as the TI 99000 series of processors were. These processors were far faster when executing a context switch because all registers (except for status, program counter, and workspace pointer) were located in memory. During a context switch, only those three registers had to be saved to memory, because all others were already there.

In addition, because of the memory-to-memory architecture, memory manipulation (add, subtract, etc.) was faster because there was no need to copy the memory content into a register before the calculation was performed, and no need to copy back to a register before writing the result back to memory. From memory as the the difference between the two at the time:


TI add A to B:

Read A into Accum.
Read and add B to Accum.
Write result to memory.


x86 add A to B:

Read A into reg1.
Read B into reg2.
Add reg1 to reg2 with result in reg3.
Write result to memory.

The x86 has an additional step that the TI did not.

Throw in a stack and there's even more overhead (the TI had no stack, unless the programmer wrote one, which I never found the need for).

PGA
--
Paul G. Allen, BSIT/SE
Owner, Sr. Engineer
Random Logic Consulting Services
www.randomlogic.com


--
[email protected]
http://www.kernel-panic.org/cgi-bin/mailman/listinfo/kplug-list

Reply via email to