Lecture 24: Virtualization

What is virtualization?

Why virtualization?

Virtualization example: Bochs

class BOCHSAPI BX_CPU_C : public logfunctions {
public: // for now...

  unsigned bx_cpuid;
  ...

  // General register set
  // rax: accumulator
  // rbx: base
  // rcx: count
  // rdx: data
  // rbp: base pointer
  // rsi: source index
  // rdi: destination index
  // esp: stack pointer
  // r8..r15 x86-64 extended registers
  // rip: instruction pointer
  // ssp: shadow stack pointer
  // tmp: temp register
  // nil: null register
  bx_gen_reg_t gen_reg[BX_GENERAL_REGISTERS+4];
  ...

  BX_SMF void ADD_GqEqR(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
  ...
};

void BX_CPP_AttrRegparmN(1) BX_CPU_C::ADD_GqEqR(bxInstruction_c *i)
{
  Bit64u op1_64, op2_64, sum_64;

  op1_64 = this->gen_reg[i->dst()].rrx;
  op2_64 = this->gen_reg[i->src()].rrx;
  sum_64 = op1_64 + op2_64;
  this->gen_reg[i->dst()].rrx = sum_64;

  SET_FLAGS_OSZAPC_ADD_64(op1_64, op2_64, sum_64);

  this->prev_rip = this->gen_reg[BX_64BIT_REG_RIP].rrx;
  BX_INSTR_AFTER_EXECUTION(BX_CPU_ID, i);
  this->icount++;

  if (this->async_event) return;
  ++i;

  BX_INSTR_BEFORE_EXECUTION(BX_CPU_ID, i);
  this->gen_reg[BX_64BIT_REG_RIP].rrx += i->ilen();
  return (this->*(i->execute1)) (i);
}

History of virtualization

Popek–Goldberg virtualization

Theorem 1. A virtual machine monitor may be constructed for an architecture in which every sensitive instruction is privileged.

Theorem 3. A hybrid VMM may be constructed for an architecture in which every user-sensitive instruction is privileged.

“Formal requirements for virtualizable third generation architectures.” Gerald J. Popek and Robert P. Goldberg. Communications of the ACM 17(7), July 1974. Link

Virtual machine monitor

Sensitive and privileged instructions

How do instruction types relate to the VMM?

Har de har

Matrix reference

Matrix reference

Virtualization theorems

Theorem 1. A virtual machine monitor may be constructed for an architecture in which every sensitive instruction is privileged.

Theorem 3. A hybrid VMM may be constructed for an architecture in which every user-sensitive instruction is privileged.

[Hybrid VMMs relax the efficiency property; the VMM may emulate, rather than execute, innocuous instructions, but only if the guest is in kernel mode.]

The evil 17 instructions

Har de har

Matrix reference

Matrix reference

Virtualization in practice, not theory

Dynamic translation for everyone

Intel VT-x

Cost of #vmexit

Architecture Cost (cycles)
Prescott (2005) 1926
Merom (2006) 1156
Penryn (2008) 858
Westmere (2010) 569
Sandy Bridge (2011) 507
Ivy Bridge (2012) 466
Haswell (2013) 512
Broadwell (2014) 531