虚拟机课程2CPU虚拟化.ppt_第1页
虚拟机课程2CPU虚拟化.ppt_第2页
虚拟机课程2CPU虚拟化.ppt_第3页
虚拟机课程2CPU虚拟化.ppt_第4页
虚拟机课程2CPU虚拟化.ppt_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、E6998 虚拟机课程 2CPU 虚拟化,Scott Devine VMware, Inc.,提纲,CPU 背景 虚拟化技术 系统ISA虚拟化 指令解释 陷入模拟 二进制翻译 混合模型,计算机系统组成,CPU,MMU,内存,控制器,本地总线,I接口,高速I/O总线,NIC,控制器,桥,帧缓存,LAN,低速I/O总线,USB,CD-ROM,CPU 组成,指令系统结构(ISA) 定义: 对编程人员可见的状态 寄存器和内存 在这些状态上进行的操作指令 典型ISA划分为2部分 用户 ISA 主要用来计算 系统 ISA 主要用来管理系统资源,用户 ISA 状态,用户虚拟内存,程序计数器,条件码寄存器,R

2、eg 0,Reg 1,Reg n-1,FP 0,FP 1,FP n-1,专用寄存器,通用一般寄存器,浮点寄存器,用户 ISA 指令,取指,寄存器操作,发射,Integer,Integer,Memory,FP,典型指令流水线,译码,指令集,系统 ISA,特权级别 控制寄存器 陷入和中断 硬编码向量 分派表 系统时钟 内存管理单元MMU 页表 TLB I/O 设备访问,System,User,User,Extension,Kernel Level 0,Level 1,Level 2,提纲,CPU 背景 虚拟化技术 系统ISA虚拟化 指令解释 陷入模拟 二进制翻译 混合模型,Isomorphism,

3、形式上讲,虚拟化就是从客户机状态到宿主机状态的同构构造,Guest,Host,e(Si),e(Si),V(Si),V(Sj),系统指令体系结构的虚拟化,监视器需要的硬件支持 例如: 监视器必须能够控制实际的硬件中断 访问硬件使得虚拟机(VM)破坏隔离性 例如: 访问MMU使得VM能够写任何页 因此 客户机所有对虚拟系统ISA访问的操作必须由监视器软件模拟实现。 系统的状态保存在内存中。 系统指令都由虚拟机监视器的相关函数实现相关函数实现在监视器中,示例:CPU状态,static struct uint32 GPR16; uint32 LR; uint32 PC; int IE; int IRQ

4、; CPUState; void CPU_CLI(void) CPUState.IE = 0; void CPU_STI(void) CPUState.IE = 1; ,CPU虚拟化技术的目标 能够尽可能快的处理一般指令 特权指令转交给模拟例程,指令解释,模拟 取指/译码/执行 软件流水线 优点 容易实现 复杂度最低 缺点 慢!,实例: 虚拟化中断标识w/ 指令解释器,void CPU_Run(void) while (1) inst = Fetch(CPUState.PC); CPUState.PC += 4; switch (inst) case ADD: CPUState.GPRrd =

5、 GPRrn + GPRrm; break; case CLI: CPU_CLI(); break; case STI: CPU_STI(); break; if (CPUState.IRQ ,陷入和模拟,客户操作系统+ 应用,虚拟机监视器,缺页,未定义指令,虚拟中断,MMU 模拟,CPU 模拟,I/O 模拟,非特权态,特权态,“严格的可虚拟化”,处理器能够虚拟化的前提是:当运行一个不是很特权的模式时: 所有访问特权状态的指令都陷入 所有指令要么陷入,要么和原来一样的执行 ,陷入模拟的问题,并不是所有的体系结构都支持 陷入的代价比较高 监视器在特权级别 需要虚拟化保护级别,二进制翻译,翻译器,

6、客户代码,翻译缓存,翻译缓存TC 索引,CPU 模拟例程,基本块,vPC,mov ebx, eax,cli,and ebx, 0 xfff,mov ebx, cr3,sti,ret,客户代码,Straight-line code,控制流图,基本块,二进制翻译,vPC,mov ebx, eax,cli,and ebx, 0 xfff,mov ebx, cr3,sti,ret,mov ebx, eax,call HANDLE_CLI,and ebx, 0 xfff,mov CO_ARG, ebx,call HANDLE_CR3,call HANDLE_STI,jmp HANDLE_RET,开始,客

7、户代码,翻译缓存,二进制翻译,vPC,mov ebx, eax,cli,and ebx, 0 xfff,mov ebx, cr3,sti,ret,mov ebx, eax,mov CPU_IE, 0,and ebx, 0 xfff,mov CO_ARG, ebx,call HANDLE_CR3,mov CPU_IE, 1,test CPU_IRQ, 1,jne,call HANDLE_INTS,jmp HANDLE_RET,start,客户代码,翻译缓存,基本二进制翻译器,void BT_Run(void) CPUState.PC = _start; BT_Continue(); void B

8、T_Continue(void) void *tcpc; tcpc = BTFindBB(CPUState.PC); if (!tcpc) tcpc = BTTranslate(CPUState.PC); RestoreRegsAndJump(tcpc); void *BTTranslate(uint32 pc) void *start = TCTop; uint32 TCPC = pc; while (1) inst = Fetch(TCPC); TCPC += 4; if (IsPrivileged(inst) EmitCallout(); else if (IsControlFlow(i

9、nst) EmitEndBB(); break; else /* ident translation */ EmitInst(inst); return start; ,基本二进制翻译器 第二部分,void BT_CalloutSTI(BTSavedRegs regs) CPUState.PC = BTFindPC(regs.tcpc); CPUState.GPR = regs.GPR; CPU_STI(); CPUState.PC += 4; if (CPUState.IRQ ,控制流的控制,vEPC,test eax, 1,jeq,add ebx, 18,mov ecx, ebx,mov

10、ecx, eax,test eax, 1,jeq,call END_BB,call END_BB,开始,客户代码,翻译缓存,ret,控制流的控制,vEPC,test eax, 1,jeq,add ebx, 18,mov ecx, ebx,mov ecx, eax,test eax, 1,jeq,call END_BB,call END_BB,客户代码,翻译缓存,ret,add ebx, 18,mov ecx, ebx,mov ecx, eax,call HANDLE_RET,eax = 0,查找下一个,控制流的控制,vEPC,test eax, 1,jeq,add ebx, 18,mov ec

11、x, ebx,mov ecx, eax,test eax, 1,jeq,jmp,call END_BB,客户代码,翻译缓存,ret,add ebx, 18,mov ecx, ebx,mov ecx, eax,call HANDLE_RET,eax = 0,控制流的控制,vEPC,test eax, 1,jeq,add ebx, 18,mov ecx, ebx,mov ecx, eax,test eax, 1,jeq,jmp,call END_BB,客户代码,翻译缓存,ret,add ebx, 18,mov ecx, ebx,mov ecx, eax,call HANDLE_RET,eax =

12、1,查找下一步,mov ecx, eax,call HANDLE_RET,控制流的控制,vEPC,test eax, 1,jeq,add ebx, 18,mov ecx, ebx,mov ecx, eax,test eax, 1,jeq,jmp,jmp,Guest Code,Translation Cache,ret,add ebx, 18,mov ecx, ebx,mov ecx, eax,call HANDLE_RET,eax = 1,mov ecx, eax,call HANDLE_RET,二进制翻译存在的问题,翻译缓存索引数据结构 PC(程序计数器) 在中断上的同步 自我修改(Self-modifying )的代码 将写操作转给翻译后的客户机代码在翻译好的客户代码的写通知,二进制翻译的其他使用,ISA交叉翻译器 Digital FX!32 优化翻译器 H.P. Dynamo 高级语言字节码翻译器 Java .NET/CLI,混合方式,内核代码为内核的二进制翻译 用户代码为用户的直接执行(陷入模拟) U.S. Patent

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论