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